首页 > 解决方案 > Nodejs sequelize hasMany 问题

问题描述

我已经在这个续集中打破了我的头脑,以获得产品问题并包括它的答案

const ProductQuestions = sequelize.define('product_questions', {
  user: {
     type: Sequelize.BIGINT
  },
  product: {
     type: Sequelize.BIGINT
  },
  question: {
     type: Sequelize.TEXT
  }
});

ProductQuestions.associate = function(models) {
   ProductQuestion.hasMany(models.product_answers,{
       foreignKey: 'question',
       as: 'questionId'
    });
}

const ProductAnswer = sequelize.define('product_answers', {
  question: {
     type: Sequelize.BIGINT,
     field: 'questionId'
  },
  answer: {
     type: Sequelize.TEXT
  },
  user: {
     type: Sequelize.BIGINT,
     field: 'userId'
  }
});

ProductQuestiosn.findAll({include: ['product_answers']});

出于某种原因,当查询运行时,列是错误的

SELECT 
"product_questions".*, 
"product_answers"."id" AS "product_answers.id", 
"product_answers"."questionId" AS "product_answers.questionId",
"product_answers"."answer" AS "product_answers.answer", 
"product_answers"."userId" AS "product_answers.user", 
"product_answers"."productQuestionId" AS "product_answers.productQuestionId" 
FROM (
SELECT 
"product_questions"."id", 
"product_questions"."productId" AS "product", 
"product_questions"."question", 
"product_questions"."userId" AS "user", 
FROM 
"product_questions" AS "product_questions") 
AS "product_questions" 
LEFT OUTER JOIN "product_answers" AS "product_answers" 
ON "product_questions"."id" = "product_answers"."productQuestionId"

不知道为什么

ON "product_questions"."id" = "product_answers"."productQuestionId" 

什么时候应该

ON "product_questions"."id" = "product_answers"."questionId"

谢谢您的帮助

标签: node.jspostgresqlsequelize.js

解决方案


所以我想通了!

所以看来我必须正确命名我的列

对于我的 postgres 数据库中的 product_answers 表,我有列 questionId,但它应该命名为 productQuestionId。我想这是为了命名约定,我不能按照我想要的方式命名外键。


推荐阅读