Javascript Sequelize多对多添加功能不起作用

Javascript Sequelize多对多添加功能不起作用,javascript,node.js,express,sequelize.js,many-to-many,Javascript,Node.js,Express,Sequelize.js,Many To Many,package.json 快递:^4.17.1, 页码:^7.17.1, 页面存储:^2.3.3, 续集:^5.21.3 有两种型号: 有一个用于关联的组: 以及将用户添加到组的方法: 执行过程中出现错误: 未处理的拒绝类型错误:user.addGroup不是函数 它应该会起作用。以下是一个工作示例: 从“../../db”导入{sequelize as seq}; 从“Sequelize”导入Sequelize; const User=seq.define “用户”, { 身份证:{ 类型:S

package.json

快递:^4.17.1, 页码:^7.17.1, 页面存储:^2.3.3, 续集:^5.21.3

有两种型号:

有一个用于关联的组:

以及将用户添加到组的方法:

执行过程中出现错误:

未处理的拒绝类型错误:user.addGroup不是函数


它应该会起作用。以下是一个工作示例:

从“../../db”导入{sequelize as seq}; 从“Sequelize”导入Sequelize; const User=seq.define “用户”, { 身份证:{ 类型:Sequelize.INTEGER, 自动递增:真, primaryKey:没错, allowNull:错, }, 登录:{ 类型:Sequelize.STRING, allowNull:错, }, 密码:{ 类型:Sequelize.STRING, allowNull:错, }, 年龄:{ 类型:Sequelize.INTEGER, }, 已重新选择:{ 类型:Sequelize.BOOLEAN, }, }, {时间戳:false}, ; 常量组=序号定义 "集团",, { 身份证:{ 类型:Sequelize.INTEGER, 自动递增:真, primaryKey:没错, }, 姓名:{ 类型:Sequelize.STRING, allowNull:错, }, 权限:{ 类型:Sequelize.ARRAYSequelize.STRING, }, }, {时间戳:false}, ; const UserGroup=seq.define'UserGroup',{}; Group.belongToManyUser,{通过:UserGroup}; User.belongToManyGroup,{通过:UserGroup}; 异步功能测试{ 试一试{ wait seq.sync{force:true}; //种子 等待User.bulkCreate [ {登录名:'a',密码:'123',组:[{name:'groupa'},{name:'groupb'}]}, {登录名:'b',密码:'321',组:[{name:'groupc'},{name:'groupd'}]}, ], {包括:[组]}, ; //试验 const userIds=[1,2]; constgroupid=3; const user=await user.findOne{where:{id:userIds}}; const group=await group.findOne{where:{id:groupId}; const result=await user.addGroupgroup; console.logresult; }捕捉错误{ console.logerror; }最后{ 等待序列关闭; } }; 执行结果和生成的SQL:

执行默认值:如果存在用户组级联,则删除表; 执行默认:如果存在组级联,则删除表; 执行默认:如果存在用户级联,则删除表; 执行默认:如果存在用户级联,则删除表; 执行默认值:创建表如果不存在用户id序列,登录VARCHAR255不为空,密码VARCHAR255不为空,年龄整数,isDeselected布尔值,主键id; 执行默认值:选择i.relname作为名称,ix.indprimary作为主要,ix.indunique作为唯一,ix.indkey作为indkey,array_agga.attnum作为列索引,array_agga.attname作为列名称,pg_get_indexdefix.indexrelid作为pg_class t,pg_class i,pg_index ix中的定义,pg_属性a,其中t.oid=ix.indrelid和i.oid=ix.indexrelid和a.attrelid=t.oid和t.relkind='r'和t.relname='user'按i.relname分组,ix.indexrelid,ix.indprimary,ix.indisunique,ix.indkey按i.relname排序; 执行默认:如果存在组级联,则删除表; 执行默认值:创建表如果不存在组id序列,名称VARCHAR255不为空,权限VARCHAR255[],主键id; 执行默认值:选择i.relname作为名称,ix.indprimary作为主要,ix.indunique作为唯一,ix.indkey作为indkey,array_agga.attnum作为列索引,array_agga.attname作为列名称,pg_get_indexdefix.indexrelid作为pg_class t,pg_class i,pg_index ix中的定义,pg_属性a,其中t.oid=ix.indrelid和i.oid=ix.indexrelid和a.attrelid=t.oid和t.relkind='r'和t.relname='group'按i.relname分组,ix.indexrelid,ix.indprimary,ix.indisunique,ix.indkey按i.relname排序; 执行默认值:如果存在用户组级联,则删除表; 执行默认值:创建表如果不存在UserGroup groupId INTEGER引用更新级联上删除级联上的组id,userId INTEGER引用更新级联上删除级联上的用户id,主键groupId,userId; 执行默认值:选择i.relname作为名称,ix.indprimary作为主要,ix.indunique作为唯一,ix.indkey作为indkey,array_agga.attnum作为列索引,array_agga.attname作为列名称,pg_get_indexdefix.indexrelid作为pg_class t,pg_class i,pg_index ix中的定义,pg_属性a,其中t.oid=ix.indrelid和i.oid=ix.indexrelid和a.attrelid=t.oid和t.relkind='r'和t.relname='UserGroup'按i.relname分组,ix.indexrelid,ix.indisprimary,ix.indisunique,ix.indkey按i.relname排序; 执行默认值:插入用户id、登录名、密码值默认值、'a'、'123',默认值、'b'、'321'返回*; 执行默认值:插入组id,名称值默认值,'group a',默认值,'group b',默认值,'group c',默认值,'group d'返回*; 执行默认值:插入用户组groupId,userId值1,1,2,1,3,2,4,2返回*; 执行默认值:选择id、登录名、密码、年龄,从用户中重新选择为用户,其中user.id在1、2限制中
// User
const User = seq.define('user', {
  id: {
    type: Sequelize.INTEGER,
    autoIncrement: true,
    primaryKey: true,
    allowNull: false
  },
  login: {
    type: Sequelize.STRING,
    allowNull: false
  },
  password: {
    type: Sequelize.STRING,
    allowNull: false
  },
  age: {
    type: Sequelize.INTEGER
  },
  isDeselected: {
    type: Sequelize.BOOLEAN
  }
}, { timestamps: false });

export default User;

// Group
const Group = seq.define('group', {
  id: {
    type: Sequelize.INTEGER,
    autoIncrement: true,
    primaryKey: true
  },
  name: {
    type: Sequelize.STRING,
    allowNull: false
  },
  permissions: {
    type: Sequelize.ARRAY
  }
}, { timestamps: false });

export default Group;
import Group from './group';
import User from './user';

const UserGroup = seq.define('UserGroup');

Group.belongsToMany(User, { through: UserGroup });
User.belongsToMany(Group, { through: UserGroup });

seq.sync({ force:true }).then(() => { console.log("Tables have been created"); }).catch(err=>console.log(err));
UserModel.findOne({ where: { id: userIds } })
      .then((user) => {
        if (!user) { return; }
        GroupModel.findOne({ where: { id: groupId } })
          .then((group) => {
            if (!group) return;
            user.addGroup(group);
          });
"pg": "^7.17.1",
"pg-hstore": "^2.3.3",
"sequelize": "^5.21.3",