我尝试使用SequelizeJS的“findOrCreate”功能,但它不起作用。
变量“created”是“undefined”,所以我不知道为什么因为它是SequelizeJS使用的变量...
for( var i = 0; i < tags.length; i++ ){
global.db.Tag.findOrCreate({name: tags[i]}).success( function(tag, created){
if( created ){
global.db.PostTag.create({
PostId: id,
TagId: tag.id
});
}
});
}
答案 0 :(得分:2)
我遇到了同样的问题。从1.7.0-alpha2升级到2.0.0-alpha2解决了它。 干杯
答案 1 :(得分:2)
对我来说,答案是将我的承诺解决方案从.then改为.spread。这与Sequelize返回数据的格式有关。
for( var i = 0; i < tags.length; i++ ){
global.db.Tag.findOrCreate({
name: tags[i]
}).spread( function(tag, created){
if( created ){
global.db.PostTag.create({
PostId: id,
TagId: tag.id
});
}
});
}
答案 2 :(得分:1)
global.db.Tag.findOrCreate({
where:{
name: tags[i]
},
defaults: {
//properties you want on create
}
}).then( function(tag){
var created = tag[1];
tag = tag[0]; //new or found
if( created ){
}
}).fail(function(err) {
});
答案 3 :(得分:0)
昨天我们遇到了这个问题,我们得以解决:
`Tag.findOrCreate({
where: { condition: value },
// in the event that it is not found
default: { /* properties of the model to create */ }
})
.then(tag => res.send(tag))
.catch(err => res.send(err))`
返回:
{
{
/* tagProperties */
},
/* true if the tag was created
false if the tag was found */
}