Sequelize:查询中的额外列

Sequelize: extra column in query

我有以下table定义

产品table

const Product = sequelize.define('product', {
  name: { type: Sequelize.TEXT },
  amount: { type: Sequelize.DECIMAL },
  category: { type: Sequelize.BIGINT, field: 'categoryId' },
  brand: { type: Sequelize.BIGINT, field: 'brandId' },
  vendor: { type: Sequelize.BIGINT, field: 'vendorId' },
  status: { type: Sequelize.BIGINT, field: 'statusId' },
  image: { type: Sequelize.TEXT },
  stock: { type: Sequelize.INTEGER },
  description: { type: Sequelize.TEXT },
  model: { type: Sequelize.TEXT },
  code: { type: Sequelize.TEXT },
});

状态table

const Statuses = sequelize.define('statuses', {
  name: {
    type: Sequelize.TEXT
  },
});

协会

Product.belongsTo(Statuses, { foreignKey: 'statusId', as: 'productStatus'});

当我 运行 以下内容时:

product = await Product.findOne({
  where: {
    id: req.query.id
  }, 
  include: ['productStatus']
})

我得到以下查询:

SELECT 
"product"."id", 
"product"."name", 
"product"."amount", 
"product"."categoryId" AS "category", 
"product"."brandId" AS "brand", 
"product"."vendorId" AS "vendor", 
"product"."statusId" AS "status", 
"product"."image", 
"product"."stock", 
"product"."description", 
"product"."model", 
"product"."code",
"product"."createdAt", 
"product"."updatedAt", 
"product"."statusId", 
"product"."categoryId", 
"product"."vendorId", 
"product"."brandId", 
"productStatus"."id" AS "productStatus.id", 
"productStatus"."name" AS "productStatus.name", 
"productStatus"."createdAt" AS "productStatus.createdAt", 
"productStatus"."updatedAt" AS "productStatus.updatedAt", 
"productStatus"."status" AS "productStatus.status" 
FROM "products" AS "product" 
LEFT OUTER JOIN "statuses" AS "productStatus" ON "product"."statusId" = "productStatus"."id" 
WHERE "product"."id" = '1'

不知道为什么

"productStatus"."status" AS "productStatus.status" 

在那里,它会导致未知列错误,因为我在状态 table

中没有该列

User.hasOne(Status, { foreignKey: 'status', as: 'UserStatus'}) 表示 Statusstatus 列,这是不正确的。这就是为什么 Sequelize 知道 Status 模型有 status 列并将其也添加到 SQL-query。

我想 Userstatus 列而不是 Status。如果是这样,您只需像这样更改关联:

User.belongsTo(Status, { foreignKey: 'status', as: 'UserStatus'})