Sequelize HasMany BelongsToMany 删除旧引用
Sequelize HasMany BelongsToMany removes old reference
我遇到了一个问题,即在创建新实例时旧引用被删除。我会展示我的代码并举个例子,我做错了什么?
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
});
`
//data保存实例需要的信息
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":"chelo@intelli.com","interests":[{"value":"kitesurf","category":"sport"}]}}
到目前为止,一切都很好,在我添加第二个之后..
{"user":{"id":1,"name":"Chelo","email":"chelo@intelli.com","interests":[]}}
{"user":{"id":2,"name":"CACA Cavazzoli",email":"chelo@intelli.com","interests":[{"value":"kitesurf","category":"sport"}]}}]}
当我创建具有相同兴趣的第二个实例时,第一个实例的兴趣被删除...
我做错了什么?
请帮忙!!!
确实是我做错了。感谢@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。
希望对您有所帮助。
我遇到了一个问题,即在创建新实例时旧引用被删除。我会展示我的代码并举个例子,我做错了什么?
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
});
` //data保存实例需要的信息
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":"chelo@intelli.com","interests":[{"value":"kitesurf","category":"sport"}]}}
到目前为止,一切都很好,在我添加第二个之后..
{"user":{"id":1,"name":"Chelo","email":"chelo@intelli.com","interests":[]}}
{"user":{"id":2,"name":"CACA Cavazzoli",email":"chelo@intelli.com","interests":[{"value":"kitesurf","category":"sport"}]}}]}
当我创建具有相同兴趣的第二个实例时,第一个实例的兴趣被删除...
我做错了什么?
请帮忙!!!
确实是我做错了。感谢@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。
希望对您有所帮助。