Sqlite 关联导致Foring键不匹配错误

Sqlite 关联导致Foring键不匹配错误,sqlite,sequelize.js,associations,Sqlite,Sequelize.js,Associations,我目前正在sequelize.js上进行实验,更具体地说是在关联中。我正在努力实现以下目标。我必须: 使用者 位置 我的逻辑如下: 用户可以或不能为其分配位置 如果用户有一个职位,该职位的id将存储在用户表的“assignedPositionId”字段中 如果用户没有位置,则“assignedPositionId”值设置为null 一个职位可以分配给多个用户 我面临的问题是,我可以成功创建一个用户,但我无法创建一个职位!我总是收到错误消息: SQLITE_ERROR: foreign key m

我目前正在sequelize.js上进行实验,更具体地说是在关联中。我正在努力实现以下目标。我必须:

  • 使用者
  • 位置
  • 我的逻辑如下:

  • 用户可以或不能为其分配位置
  • 如果用户有一个职位,该职位的id将存储在用户表的“assignedPositionId”字段中
  • 如果用户没有位置,则“assignedPositionId”值设置为null
  • 一个职位可以分配给多个用户
  • 我面临的问题是,我可以成功创建一个用户,但我无法创建一个职位!我总是收到错误消息:

    SQLITE_ERROR: foreign key mismatch - "positions" referencing "users"
    

    我知道这很容易——也许已经晚了,但我真的不知道出了什么问题!非常感谢你的帮助

    在这些情况下,我在使用hasOne时遇到问题,倾向于使用belongsTo,例如

    User.belongsTo(Position, {
       foreignKey: "assignedPositionId",
       as: "position"
    });
    

    也就是说,创建职位时生成的SQL是什么样子的?您可以直接在Sqlite shell中执行此操作吗?这种类型的错误消息有时表明表PKs有问题。

    @KenOn10,感谢您提供建议。在仔细阅读文档并执行了几项测试之后,我最终采用了以下方法,该方法非常有效:

    User.hasMany(Position, {
      as: "position",
      sourceKey: "assignedPositionId",
      foreignKey: "id",
      constraints: false
    });
    
    Position.belongsTo(User, {
      as: "users",
      foreignKey: "assignedPositionId",
      constraints: false
    });
    

    再次感谢您抽出时间。

    看看我在回答中是如何解决的。非常感谢你的帮助和建议。约束条件:false在我的案例中起了关键作用。
    User.hasMany(Position, {
      as: "position",
      sourceKey: "assignedPositionId",
      foreignKey: "id",
      constraints: false
    });
    
    Position.belongsTo(User, {
      as: "users",
      foreignKey: "assignedPositionId",
      constraints: false
    });