разделить сферу с конкатетным где - PullRequest
0 голосов
/ 29 января 2019

Следующее работает, если не используется область действия:

where = {};

  ...
case c: {
  where = Sequelize.where(Sequelize.fn('concat', Sequelize.col('firstName'), ' ', Sequelize.col('lastName')), {
    like: '% John Doe %'
  })
}
Model.findAll({
  where: where
})

Но не как функция области действия:

scopes: {
  field: function (field, keyword = '%%') {
    let where = {};
    switch (field.toLowerCase()) {
      case 'id':
        where.id = {[Op.like]: keyword};
        break;
      case 'email':
        where.email = {[Op.like]: keyword};
        break;
      case 'name' :
        where = sequelize.where(sequelize.fn('concat', sequelize.col('first_name'), ' ', sequelize.col('last_name')), {
          [Op.like]: keyword
        });
      }
      return {
        where
      }
    },
  }

получение этой ошибки:

Неизвестный столбец 'User.attribute' в 'предложении where'

console.log(where):

Where {
  attribute: Fn { fn: 'concat', args: [ [Col], ' ', [Col] ] },
  comparator: '=',
  logic: { [Symbol(like)]: '%%' }
}

кто-нибудь сталкивался ранее?

1 Ответ

0 голосов
/ 31 января 2019

Ваша функция объема использует "sequelize", когда вам нужно "Sequelize"?

...
case 'name' :
        where = Sequelize.where(sequelize.fn('concat', Sequelize.col('first_name'), ' ', Sequelize.col('last_name')), {
          [Op.like]: keyword
...
...