Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Sequelize:查询中的额外列_Node.js_Postgresql_Sequelize.js - Fatal编程技术网

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'}