2016-04-11 9 views
1

新しいインスタンスを作成するときに古い参照が削除される問題があります。私は自分のコードを示し、例を挙げますが、私は何が間違っていますか?Sequelize HasMany BelongsToManyは古い参照を削除します

var Users = sequelize.define('Users', { id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true }, name: DataTypes.STRING, email: DataTypes.STRING }, { classMethods: { associate: function(models) { Users.hasMany(models.Interest,{ as: 'interests'}); } } } );

...

var Interest = sequelize.define('Interest', { category: DataTypes.STRING, value: DataTypes.STRING }, { classMethods: { associate: function(models) { Interest.belongsToMany(models.Users, {through: 'UsersInterest'}); } } });

最初、私は一人で

models.Interest.create({ value: data.value, category: data.category }).then(function(newInterest) { //allgood });

` //データは、インスタンスが

を必要とする情報を保持している関心を作成します
models.Users.create({ 
    name: data.name, 
    email: data.email 

}).then(function(newUser) { 
    //data interest contains the interest to find and add 
    for (var i = 0; i < data.interests.length; i++) { 
     models.Interest.findOne({ 
     where: { value: data.interests[i].value, category: data.interests[i].category}, 
     }).then(function(interest) { 
      newUser.addInterest(interest).then(function() { 
      } 
     }); 
     }); 
    } 
    }); 

` 私は良いそのすべてが、見て最初の作成:

{"user":{"id":1,"name":"Chelo","email":"[email protected]","interests":[{"value":"kitesurf","category":"sport"}]}}

を今まで、すべての良い、私は第二1を追加した後に...

{"user":{"id":1,"name":"Chelo","email":"[email protected]","interests":[]}} {"user":{"id":2,"name":"CACA Cavazzoli",email":"[email protected]","interests":[{"value":"kitesurf","category":"sport"}]}}]}

同じ興味のある2番目のインスタンスを作成すると、最初のインスタンスの関心が削除されます。

私は間違っていますか?

助けてください!

+0

多人数で行う場合は、 'hasMany'ではなくUserモデルでこれを行う必要があります。 'Users.belongsToMany(models.Interest、{Through: 'UsersInterest'}); ' –

+0

@ LT-ありがとう!!試してみると、それが機能すれば評判を得る答えとして書くことができます。 –

答えて

0

私は間違ったことをしていました。ありがとう@ LT - あなたのコメントのために。 私は変更正しいコード与える:

var Users = sequelize.define('Users', { id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true }, name: DataTypes.STRING, email: DataTypes.STRING }, { classMethods: { associate: function(models) { Users.belongsToMany(models.Interest,{ as: 'interests', through: 'UsersInterest'}); } } } );

を基本的に、私は、ユーザーに及び興味に、両側belongsToManyを追加しました。

希望します。

関連する問題