我有下表定义
产品表
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" 因为状态表中没有该列,因此它会导致未知的列错误吗?
发布于 2020-10-28 07:31:50
User.hasOne(Status, { foreignKey: 'status', as: 'UserStatus'})意味着Status有一个不为真的status列。这就是Sequelize知道Status模型有status列并将其添加到SQL中的原因。
我认为User有status列而不是Status。如果是这样的话,您所需要的就是像这样改变关联:
User.belongsTo(Status, { foreignKey: 'status', as: 'UserStatus'})https://stackoverflow.com/questions/64561697
复制相似问题