我定义了两个模型:
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
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;
};
我想在这之间创建多对多关联(所以一个组可以有很多用户,一个用户可以属于很多组。这是我的db/index.js
:
数据库/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,
};
当我这样做User.findAll()
时,对象中没有groups
返回属性。我应该如何在这里正确设置多对多关系?