gpt4 book ai didi

javascript - Sequelize错误处理

转载 作者:行者123 更新时间:2023-11-29 21:49:02 25 4
gpt4 key购买 nike

看看下面的示例代码,我想知道是否只在最外层的 sequelize 任务上链接一个 .catch() 就足够了,而不是总是在每个任务上链接它,这看起来很凌乱。

第二个问题是是否可以让 .then(instance, error) 包含错误对象(如果有的话)?就像 Mongoose 一样,第一个参数总是错误的对象。所以我不必 .catch 一个错误,而只需在 .then() 回调 fn 中处理它。

function facebookStrategy() {
return new FacebookStrategy({
clientID: config.facebook.app_id,
clientSecret: config.facebook.app_secret
}, function (accessToken, refreshToken, profile, done) {
process.nextTick(function () {
models.User.findOrCreate({
where: {email: profile.emails[0].value}
}).spread(function (user, created) {
models.UserPassport.findOrCreate({
where: {
// TODO(tsm): check out sequelize composite keys
method: 'facebook',
social_id: profile.id
},
defaults: {
method: 'facebook',
token: accessToken,
social_id: profile.id
}
}).spread(function (userPassport, created) {
userPassport.setUser(user).then(function () {
user.updateAttributes({
first_name: profile.name.givenName,
last_name: profile.name.familyName
}).then(function () {
return done(null, user);
});
});
}).catch(function (err) {
console.log('Error occured: ', err);
return done(err);
});
}).catch(function (err) {
console.log('Error occured: ', err);
return done(err);
});
})
})
}

最佳答案

通过返回一个 promise ,您可以将其链接起来。

所以你可以做类似的事情

function facebookStrategy() {
return new FacebookStrategy({
clientID: config.facebook.app_id,
clientSecret: config.facebook.app_secret
}, function (accessToken, refreshToken, profile, done) {
process.nextTick(function () {
models.User.findOrCreate({
where: {
email: profile.emails[0].value
}
}).spread(function (user, created) {
return models.UserPassport.findOrCreate({
where: {
// TODO(tsm): check out sequelize composite keys
method: 'facebook',
social_id: profile.id
},
defaults: {
method: 'facebook',
token: accessToken,
social_id: profile.id
}
}).spread(function (userPassport, created) {
return userPassport.setUser(user).then(function () {
return user.updateAttributes({
first_name: profile.name.givenName,
last_name: profile.name.familyName
}).then(function () {
return done(null, user);
});
});
});
}).catch(done);
});
});
}

关于javascript - Sequelize错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30100514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com