Join 通过未创建的外键续写联接表
我正在尝试在sequelize中创建用户>朋友关系。因此,我通过一个名为friends的连接表创建了一个用户模型和一个归属关系。它创建了表,但没有创建foreignKeys userId和friendId。如果有人能帮我,我会很高兴的 用户模型:Join 通过未创建的外键续写联接表,join,express,many-to-many,sequelize.js,Join,Express,Many To Many,Sequelize.js,我正在尝试在sequelize中创建用户>朋友关系。因此,我通过一个名为friends的连接表创建了一个用户模型和一个归属关系。它创建了表,但没有创建foreignKeys userId和friendId。如果有人能帮我,我会很高兴的 用户模型: var User = sequelize.define('user', { id: { type: Sequelize.INTEGER, autoIncrement: true, primaryKey: tr
var User = sequelize.define('user', {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true
},
emailaddress: {
type: Sequelize.STRING
},
firstname: {
type: Sequelize.STRING
},
lastname: {
type: Sequelize.STRING
},
description: {
type: Sequelize.STRING
},
password: {
type: Sequelize.STRING
}
}, {
freezeTableName: true,
classMethods: {
associate: function (models) {
User.belongsToMany(models.user, {
as: "user",
through: "friend"
});
User.belongsToMany(models.user, {
as: "friend",
through: "friend"
});
User.sync({
force: true
})
}
}
});
朋友模型
var Friend = sequelize.define('friend', {
// userId: DataTypes.INTEGER,
// friendId: DataTypes.INTEGER,
status: {
type: DataTypes.BOOLEAN,
defaultValue: 0
}
}, {
freezeTableName: true,
classMethods: {
associate: function (models) {
Friend.sync()
}
}
});
这将在朋友表中生成以下字段:
id状态createdAt updatedAt
我想要以下字段:
id状态userId friendId createdAt updatedAt
package.json>“sequelize”:“^3.17.1”,您可以将
otherKey
和foreignKey
设置为sequelize。我想你应该试试这个:
User.belongsToMany(models.user, {
as: "friends",
through: "friend",
otherKey: 'userId',
foreignKey: 'friendId'
});
很抱歉,我现在无法尝试,但我希望它能帮助您。经过一些调试后,我发现问题在于我在初始化每个表时调用了Table.sync,而不是在定义所有表时只调用一次(请参阅github上sequelize express示例中的示例代码:)。这破坏了表的创建过程。我尝试了一下,得出的结论是,它并没有解决我的问题,尽管这是一种很好的方法,可以获得相同的结果。我的问题是,当初始化每个表时,我直接调用User.sync,当我从每个表中删除同步时,使用sequelize express示例代码(我使用的是express)只进行了一次同步时,它起了作用。我仍然希望将100奖金分配给您,因为您的回答为我指明了正确的方向。更新:将在2小时内处理。我还不允许授予它;)