Sequelize findOrCreate会回落以查找是否找到数据

时间:2016-03-25 02:01:26

标签: node.js sequelize.js

根据您提供的参数,

FindOrCreate可以是findcreate

所以我想知道为什么当找到catch时它会回到data (a user)承诺,当它应该只返回data时找到的.spread功能而不是尝试insert已存在的数据?!。

如下所示,如果找到或创建了用户,则无论如何都将运行相同的功能。所有功能都在为特定用户创建auth token。但出于某种原因,它会直接进入catch承诺!?

User.findOrCreate({
    where: {
        userId: details.userId,
    },  
    defaults: {
        name: details.name,
        email: details.email,
    },
    attributes: ['userId', 'name', 'email', 'profilePic'],
    }).spread(function (new_user, created) {
        console.log("\n\nNew user was created T or F: ", created);

       // Create the token and then pass it back to our callback along with the user details
        user.createTokenForUser(new_user.userId, function(token) {
            cb(token, new_user);
        });
}).catch(function (err) {
    // For some reason I'm running...?!??!?!?!?!
    console.log("\n\n", err);
}); 

1 个答案:

答案 0 :(得分:1)

您是否尝试删除where语句中的尾随逗号?它只是一个错误,看起来像一个罪魁祸首:)

where: {
        userId: details.userId,
    }

where: {
        userId: details.userId
    }