【发布时间】:2013-11-07 15:54:21
【问题描述】:
我正在使用 sequelize.js 作为 ORM,我正在尝试定义两个对象之间的关系:Review 和 User。一位用户可以撰写/拥有许多评论。因此,一条评论始终只属于一个用户。没有连接表,此信息保存在 Review 对象中名为 user_id 的列中。
我尝试将关系定义如下:
Review.belongsTo(User, { foreignKey: 'user_id' });
User.hasMany(Review, { foreignKey: 'user_id', useJunctionTable: false });
现在我在 Review 上使用 find 并且我想包含 user 对象。我这样做是:
Review.find({
where: {
id: reviewId
},
include: [User]
});
我找回了错误
ER_BAD_FIELD_ERROR:“字段列表”中的未知列“user.user_id”。
Sequelize 请求user.user_id,因为它认为它应该这样做。真正有趣的是它以某种方式起作用,但现在不再起作用了。文档在这里并没有应有的那么健谈,所以我不确定如何定义两个对象之间的关联,或者一般意义上的belongsTo 关系。也许你们中的任何人都可以在这里帮助我。
【问题讨论】:
-
你测试的是什么版本?我刚刚用最新的master(v1.7.0-beta.1,它似乎工作正常
-
我使用的是 2.0beta1 版本。我现在完全重新设计了所有关联之间的关联,它终于可以工作了!真的很容易出错:-)
-
我知道这个问题现在已经很老了,但我有完全相同的问题。在重新设计关联时,您考虑了什么?有没有什么你误解了我也误解了? ;)
-
除了 useJunctionTable 我仍然使用相同的关联定义,它仍然有效(现在使用 Sequelize 3.x)
-
将近 3 年后我遇到了 3 个问题。有谁知道为什么会这样?
标签: mysql sequelize.js