[英]Sequelize – many to many associations
I have two models defined: 我定义了两个模型:
db/models/User.js db / models / User.js
const Sequelize = require('sequelize');
module.exports = (sequelize, DataTypes) => {
class User extends Sequelize.Model {}
const config = {
sequelize,
modelName: 'user',
underscored: true,
paranoid: true,
});
User.init({
first_name: {
type: DataTypes.STRING,
},
last_name: {
type: DataTypes.STRING,
},
}, config);
return User;
};
db/models/Group.js db / models / Group.js
const Sequelize = require('sequelize');
module.exports = (sequelize, DataTypes) => {
class Group extends Sequelize.Model {}
const config = {
sequelize,
modelName: 'group',
underscored: true,
paranoid: true,
});
Group.init({
name: {
type: DataTypes.STRING,
allowNull: false,
},
}, config);
return Group;
};
I want to create many-to-many association between then (so a group can have many users, and a user can belong to many groups. Here is my db/index.js
: 我想在那时之间建立多对多关联(这样一个组可以有许多用户,并且一个用户可以属于多个组。这是我的
db/index.js
:
db/index.js db / index.js
const Sequelize = require('sequelize');
const Logger = require('../config/logger');
const { DB } = require('../config/vars');
const UserModel = require('./models/User');
const GroupModel = require('./models/Group');
const sequelize = new Sequelize(
DB.name,
DB.username,
DB.password,
{
host: DB.host,
dialect: 'postgres',
},
);
const Models = {
User: UserModel(sequelize, Sequelize),
Group: GroupModel(sequelize, Sequelize),
};
const setup = async () => {
// Associations
Models.User.belongsToMany(Models.Group, {
through: 'UserGroups',
as: { singular: 'group', plural: 'groups' },
});
Models.Group.belongsToMany(Models.User, {
through: 'UserGroups',
as: { singuler: 'user', plural: 'users' },
});
await sequelize.sync({ force: true });
};
module.exports = {
...Models,
setup,
Seeders,
Sequelize,
sequelize,
};
When I do User.findAll()
, there is no groups
attribute returned in the object. 当我执行
User.findAll()
,对象中没有返回groups
属性。 How should I properly set up many-to-many relationship here? 我应该如何在这里正确建立多对多关系?
User.findAll()
will return it associated models by defaults, you need to use include
like this : User.findAll()
会默认返回与之相关的模型,您需要使用include
例如:
User.findAll({
include : {
model : Groups
}
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.