我目前正在sequelize.js上进行实验,更具体地说是在关联中进行实验。我想要实现的是以下内容。我必须建模:
我的逻辑如下:
我面临的问题是,我可以成功创建用户,但无法创建职位!我总是不断收到错误消息:
SQLITE_ERROR: foreign key mismatch - "positions" referencing "users"
User.hasOne(Position, {
sourceKey: "assignedPositionId",
foreignKey: "id",
as: "position"
});
Position.hasMany(User, {
sourceKey: "id",
foreignKey: "assignedPositionId",
as: "users",
});
我知道这并不容易-也许已经晚了,但我真的不知道出了什么问题!非常感谢您的帮助!
答案 0 :(得分:2)
在这些情况下,我在使用hasOne时遇到问题,例如,倾向于使用belongsTo。
User.belongsTo(Position, {
foreignKey: "assignedPositionId",
as: "position"
});
也就是说,创建头寸时生成的SQL是什么样的?您可以直接在Sqlite shell中执行此操作吗?这类错误消息有时表明您的表PK有问题。
答案 1 :(得分:0)
@ KenOn10,谢谢您的建议。在仔细阅读文档并进行了几次测试之后,我最终采用了以下方法,该方法非常有效:
User.hasMany(Position, {
as: "position",
sourceKey: "assignedPositionId",
foreignKey: "id",
constraints: false
});
Position.belongsTo(User, {
as: "users",
foreignKey: "assignedPositionId",
constraints: false
});
再次感谢您的时间。