node.js - Sequelize : extra column in query

标签 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' },
  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" 
是否存在并导致未知列错误,因为我在状态表中没有该列

最佳答案

User.hasOne(Status, { foreignKey: 'status', as: 'UserStatus'}) 表示 Status 具有不正确的 status 列。这就是为什么 Sequelize 知道 Status 模型有 status 列并将其添加到 SQL-query 中。
我想 Userstatus 列而不是 Status 。如果是这样,您只需要像这样更改关联:

User.belongsTo(Status, { foreignKey: 'status', as: 'UserStatus'})

关于node.js - Sequelize : extra column in query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64561697/

相关文章:

javascript - socket.io 将数据发送到匹配的套接字

node.js - 如何使用 Mongoose 将动态字段添加到现有集合

postgresql:何时使用数组构造函数与大括号

node.js - 无法使用 sequelize : 'Column " 0"of relation "users"does not exists' 递增

json - ORM : Sequelize: How can I return except some json data?

javascript - 将对象数组从 EJS 模板传递到 Javascript 函数?

javascript - 在 Node 中使用 require ,而不仅仅是代码而不是文件

postgresql - 哪个 View 具有序列的 cache_value?

postgresql - Mac OSX Lion Postgres 不接受/tmp/.s.PGSQL.5432 上的连接

mysql - Sequelize defaultValue 未设置