Node.js Sequelize:查询中的额外列
我有下表 产品表Node.js Sequelize:查询中的额外列,node.js,postgresql,sequelize.js,Node.js,Postgresql,Sequelize.js,我有下表 产品表 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' }, vend
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 },
});
状态表
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"
存在并且它导致一个未知列错误,因为我在statuses表中没有该列User.hasOne(Status,{foreignKey:'Status',as:'UserStatus'})
表示Status
具有不正确的Status
列。这就是为什么Sequelize知道Status
模型有Status
列,并将其添加到SQL查询中
我假设用户
有状态
列,而不是状态
。如果是这样的话,您只需像这样更改关联:
User.belongsTo(Status, { foreignKey: 'status', as: 'UserStatus'})
您是否有反向关联
有许多?如果是这样,你能显示它吗?正确的包含应该是include:{model:Status,as:'productStatus'}
@Anatoly我有这个用户。hasOne(Status,{foreignKey:'Status',as:'UserStatus'}),一旦我说出来,效果很好,怪人@doublesharp谢谢,我试过了,但没有成功:-)试一下这个也include:[{model:status,as:'productStatus'}