【发布时间】:2018-03-18 18:21:27
【问题描述】:
我遇到了一个问题,即我的查询中的 include 不起作用,我不知道为什么。我有两个模型:问题和建议。
Question:
var Question = sequelize.define('Question', {
}, {
classMethods: {
associate: function (models) {
// associations can be defined here
Question.belongsTo(models.User, {
as: 'askerId',
foreignKey: 'askerId'
})
Question.belongsTo(models.User, {
as: 'winnerId',
foreignKey: 'winnerId'
})
Question.hasMany(models.Suggestion)
Question.hasMany(models.TagQuestion)
}
}
})
建议:
var Suggestion = sequelize.define('Suggestion', {
text: DataTypes.STRING
}, {
classMethods: {
associate: function (models) {
// associations can be defined here
Suggestion.belongsTo(models.Question, {
foreignKey: 'questionId',
as: 'question'
})
Suggestion.belongsTo(models.User)
Suggestion.hasMany(models.Vote)
}
}
})
我尝试的查询在这里:
Question.findAll({
include: [{
model: models.Suggestion
}]
})
但我不断收到错误消息:SequelizeEagerLoadingError: Suggestion is not associated to Question!
为什么它们没有关联?它们在我的数据库中(基于我编写的迁移)。如果我目前做错了,我应该如何建立我的关联?我查看了其他有此问题的人,但无法弄清楚为什么我的关联是错误的。
【问题讨论】:
-
你用的是什么版本的sequelize?如果 gt v4 在主题 How sequelize works? 中看到我的答案(在 sequelize v4 中删除了 classMethods 和 instanceMethods)
-
是的,这很有帮助。我在连接表查询方面仍然存在一些问题(它已链接,但没有找到通过连接表链接的对象)。
-
更新您的问题,添加您实际所做的示例。什么类型的协会?或者您对所有类型都有错误?你遇到了什么错误?
-
docs.sequelizejs.com/manual/tutorial/… 来自官方文档:如果关联有别名(使用 as 选项),则在包含模型时必须指定此别名。
标签: node.js postgresql sequelize.js