我试图在sequelize中创建用户>朋友关系 . 因此,我通过名为friends的连接表创建了用户模型和belongsToMany关系 . 它创建了表,但是没有创建foreignKeys userId和friendId . 如果有人可以帮助我,我会很高兴 .
用户模型:
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()
}
}
});
这会在friend表中生成以下字段:
id status createdtt updatedAt
我想要以下字段:
id status userId friendId createdAt updatedAt
package.json>“sequelize”:“^ 3.17.1”,
2 回答
您可以将
otherKey
和foreignKey
设置为续集关联 . 我想你应该试试这个:对不起,我现在不能尝试,但我希望,它可以帮到你 .
经过一些调试后我发现问题是我在初始化每个表时调用了Table.sync而不是在定义所有表时只调用一次(参见github上的sequelize express示例中的示例代码:https://github.com/sequelize/express-example) . 这破坏了表创建过程 .