簡體   English   中英

在源中創建行並與Sequelize多對多模型關聯

[英]Creating row in both source and association with Sequelize many to many model

我在用戶和組之間有很多關系。 一個用戶有多個組,一個組有許多用戶。

我有一個用戶表,一個組表和一個名為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})
  })

如果您只是想將用戶分配給新創建的組,則需要像以前一樣使用addUser ,但是此方法接受第一個參數作為Model的實例或實例的ID,就像documentation所說的那樣

實例或與此實例相關聯的主鍵。

因此,您將必須執行group.addUser(userId).then(...) ,在您的情況下將是group.addUser(1).then(...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM