0
我在用戶和組之間有多對多的關係。用戶有許多組,並且一個組有許多用戶。在源和關聯中創建行Sequelize多對多模型
我有一個用戶表,一個組表和一個名爲usersGroups的聯結表。
我的用戶模型:
'use strict';
module.exports = function(sequelize, DataTypes) {
var User = sequelize.define('User', {
firstName: DataTypes.STRING,
lastName: DataTypes.STRING,
email: DataTypes.STRING,
username: DataTypes.STRING,
facebookId: DataTypes.STRING,
password: DataTypes.STRING,
}, {
classMethods: {
associate: function(models) {
User.hasMany(models.Payment);
User.hasMany(models.Friend, {foreignKey: 'userIdLink1', allowNull: false});
User.belongsToMany(models.Group, { as: 'Groups', through: 'usersGroups', foreignKey: 'userId' });
}
},
instanceMethods: {
toJSON: function() {
var values = Object.assign({}, this.get());
delete values.password;
return values;
}
}
});
return User;
};
我的組模型
'use strict';
module.exports = function(sequelize, DataTypes) {
var Group = sequelize.define('Group', {
}, {
classMethods: {
associate: function(models) {
// associations can be defined here
Group.belongsToMany(models.User, { as: 'Users', through: 'usersGroups', foreignKey: 'groupId' });
}
},
instanceMethods: {
toJSON: function() {
var values = Object.assign({}, this.get());
delete values.password;
return values;
}
}
});
return Group;
};
當我嘗試創建新組與下列2種方法相關的用戶,它會創建一個新的組,但沒有關聯
const values = {
userId: 1
}
const options = {
include: db.Users
}
db.Group
.create(values, options)
.then((group) => {
res.send(group)
}).catch(err => {
res.status(500).send({err: err})
})
或
db.Group
.create()
.then((group) => {
group.addUser({ userId: 1 }).then(result => {
res.send(result)
}).catch(err => {
res.status(500).send({err: err})
})
}).catch(err => {
res.status(500).send({err: err})
})
對不起,也許我的帖子還不夠清晰,但我不想創建一個新用戶,我想在usersGroups聯結表中創建一個條目,它引用新的groupId和我傳入的現有userId – Stretch0
我知道,我只是想簡要描述一下創建關聯的模型,但我還包括了你的情況 - 將用戶分配給組。我編輯了答案,所以現在只剩下這部分。 – piotrbienias
感謝@piotrbienias,這工作 – Stretch0