通过虚拟字段查询查询

时间:2016-04-30 10:14:19

标签: sequelize.js

我有一个包含2个字段的架构。一个记录用户,另一个是基于第一个字段的虚拟字段。

use App\Category;

我试着做

sequelize.define("Invoice", {
  is_processing_by: { 
    type: DataTypes.INTEGER,
    references: "usertable",
    referencesKey: "id",
    allowNull: false
  },
  is_processing: { 
    type: DataTypes.VIRTUAL,
    get: function() {
      return this.get("is_processing_by")
    }
  }
}

但它给了我一个错误:

Invoice.find({where: {is_processing: 123}})

有谁知道发生了什么?谢谢。

1 个答案:

答案 0 :(得分:0)

对于所有为此苦苦挣扎的人(就像我以前一样),您可以只使用原始SQL的一部分来创建虚拟列,并使用它对行进行排序。像这样:

const { literal } = require('sequelize')
...
const attributes = Object.keys(Users.rawAttributes)
const users = await Users({
  attributes: [
    ...attributes,
    [literal(`
      coalesce(
        nickname,
        concat("firstName", ' ', "lastName")
      )
    `),
    'name']
  ],
  ...
  order: [[literal('"name"'), 'asc']]
})

希望可以帮助某人;)