node.js - 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"
谢谢您的帮助
解决方案
所以我想通了!
所以看来我必须正确命名我的列
对于我的 postgres 数据库中的 product_answers 表,我有列 questionId,但它应该命名为 productQuestionId。我想这是为了命名约定,我不能按照我想要的方式命名外键。