【发布时间】:2020-10-28 15:31:50
【问题描述】:
我有下表定义
产品表
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"
是否存在,它会导致未知列错误,因为我在状态表中没有该列
【问题讨论】:
-
你有反向关联
hasMany吗?如果可以,可以展示一下吗? -
正确的包含是
include: { model: Statuses, as: 'productStatus' } -
@Anatoly 我有这个 User.hasOne(Status, { foreignKey: 'status', as: 'UserStatus'}); ,一旦我把它注释掉,它工作得很好,很奇怪
-
嗨@doublesharp 谢谢,我试过了,但没用 :-)
-
也试试这个
include: [ {model: Statuses, as: 'productStatus' }
标签: node.js postgresql sequelize.js