簡體   English   中英

使用Sequelize為多對多關系創建新實例

[英]Creating new instances for a Many to Many relationship using Sequelize

我正在使用NodeJS,Express,Sequelize和PostgreSQL。

我有兩個模型。 “用戶”模型和“社交”模型。 我想要一個多對多的關系,這樣一個用戶可以有很多社交,一個社交可以有很多用戶。

這是我到目前為止的代碼。 我知道“ belongsToMany”創建了一個新的Join表,我可能會嘗試太多,因為這似乎過於復雜。

型號/user.js:

'use strict';
module.exports = function(sequelize, DataTypes) {
  var User = sequelize.define('User', {
    username: DataTypes.STRING
  }, {
    classMethods: {
      associate: function(models) {
        User.belongsToMany(models.Social, {through: 'User_Social', foreignKey: 'User_rowId'})

      }
    }
  });
  return User;
};

模型/social.js:

'use strict';
module.exports = function(sequelize, DataTypes) {
  var Social = sequelize.define('Social', {
    title: DataTypes.STRING,
    description: DataTypes.TEXT
  }, {
    classMethods: {
      associate: function(models) {
        Social.belongsToMany(models.User, {through: 'User_Social', foreignKey: 'Social_rowId'})
      }
    }
  });
  return Social;
};

路線/users.js

router.post('/:UserId/socials', function(req, res) {
  userPromise = models.User.findById(req.params.UserId)

  userPromise.then(function(user) {
    models.Social.create({
    title: req.body.title,
    description: req.body.description
  })
  .then(function (social) {
    user.addSocials([social, social.id])
  })
  .then(function() {
    res.redirect('/');
  });  
  })


});

當我嘗試使用網站上的表單創建新的社交網站時,這是我在控制台中看到的錯誤:

Unhandled rejection SequelizeUniqueConstraintError: Validation error
    at Query.formatError (meetup-app/node_modules/sequelize/lib/dialects/postgres/query.js:326:16)
    at null.<anonymous> (meetup-app/node_modules/sequelize/lib/dialects/postgres/query.js:88:19)
    at emitOne (events.js:77:13)
    at emit (events.js:169:7)
    at Query.handleError (meetup-app/node_modules/pg/lib/query.js:131:8)
    at null.<anonymous> (meetup-app/node_modules/pg/lib/client.js:180:26)
    at emitOne (events.js:77:13)
    at emit (events.js:169:7)
    at Socket.<anonymous> (meetup-app/node_modules/pg/lib/connection.js:121:12)
    at emitOne (events.js:77:13)
    at Socket.emit (events.js:169:7)
    at readableAddChunk (_stream_readable.js:146:16)
    at Socket.Readable.push (_stream_readable.js:110:10)
    at TCP.onread (net.js:523:20)

任何幫助,將不勝感激!

錯誤是您創建了兩個具有相同ID(應唯一)的Social實例。 添加關聯的正確方法是通過user.addSocial(social)。

暫無
暫無

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

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