6

我尝试使用 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
            });
        }
    });
}
4

4 回答 4

3

我有同样的问题。从 1.7.0-alpha2 升级到 2.0.0-alpha2 解决了它。干杯

于 2013-06-24T01:09:46.603 回答
3

对我来说,答案是将我的承诺解析器从 .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
            });
        }
    });
}
于 2017-04-24T15:56:18.383 回答
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) {

});
https://github.com/sequelize/sequelize/wiki/Upgrading-to-2.0

于 2014-10-13T04:35:21.303 回答
0

我们昨天遇到了这个问题,我们能够解决它:

Tag.findOrCreate({
     where: { condition: value },
     // in the event that it is not found
     defaults: { /* 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 */
}
于 2020-09-05T16:33:09.967 回答