gpt4 book ai didi

node.js - 环回 PersistedModel find() 错误处理

转载 作者:行者123 更新时间:2023-12-03 08:27:10 24 4
gpt4 key购买 nike

我正在关注环回框架教程,特别是这个页面
https://docs.strongloop.com/display/public/LB/Extend+your+API
有一个通过 ID 查找实例的示例代码,我对其进行了一些修改以处理不存在的实例

Coffeeshop.getName=function(id, cb)
{
Coffeeshop.findById(id, function(err, shop){
if(err)
{
console.log(err);
cb(err);
}
else
cb(null, 'Name of the coffee shop is '+shop.name);
});
};

当我使用现有 ID 调用它时一切正常,但是当我输入无效 ID 时,而不是调用 err处理程序,它被完全省略, else语句被调用,整个应用程序崩溃并出现以下控制台错误
/app/path/here/node_modules/mysql/lib/protocol/Parser.js:78
throw err; // Rethrow non-MySQL errors

我是 node.js 的新手,我很确定我在这里遗漏了一些东西,但是错误不应该传递到回调函数中而不是被抛出到顶层吗?

这似乎不是特定于 mysql 后端,我切换到 mongo 连接器并遇到了类似的问题。如何正确处理这样的错误?

最佳答案

您需要检查 shop参数也。一个完整的检查应该是这样的:

Coffeeshop.getName=function(id, cb)
{
Coffeeshop.findById(id, function(err, shop){
if(err)
{
console.log(err);
cb(err);
}
else
{
if(shop) {
cb(null, 'Name of the coffee shop is '+shop.name);
} else {
var error = new Error();
error.message = 'Coffee Shop is not found.';
error.statusCode = 404;
cb(error);
}
}

});
};

这是回送用于其内置模型的模式。代码来自文件 node_modules/loopback/common/models/user.js , 在大约 281 行号。
User.logout = function(tokenId, fn) {
fn = fn || utils.createPromiseCallback();
this.relations.accessTokens.modelTo.findById(tokenId, function(err, accessToken) {
if (err) {
fn(err);
} else if (accessToken) {
accessToken.destroy(fn);
} else {
fn(new Error('could not find accessToken'));
}
});
return fn.promise;

关于node.js - 环回 PersistedModel find() 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38329968/

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