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'})
表示 Status
有 status
列,这是不正确的。这就是为什么 Sequelize 知道 Status
模型有 status
列并将其也添加到 SQL-query。
我想 User
有 status
列而不是 Status
。如果是这样,您只需像这样更改关联:
User.belongsTo(Status, { foreignKey: 'status', as: 'UserStatus'})
我有以下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'})
表示 Status
有 status
列,这是不正确的。这就是为什么 Sequelize 知道 Status
模型有 status
列并将其也添加到 SQL-query。
我想 User
有 status
列而不是 Status
。如果是这样,您只需像这样更改关联:
User.belongsTo(Status, { foreignKey: 'status', as: 'UserStatus'})