FindOrCreate可以是find
或create
。
所以我想知道为什么当找到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);
});
答案 0 :(得分:1)
您是否尝试删除where语句中的尾随逗号?它只是一个错误,看起来像一个罪魁祸首:)
where: {
userId: details.userId,
}
到
where: {
userId: details.userId
}