expressjs 不会在 Parse 查询(parse-server)上抛出错误
expressjs not throwing error on Parse queries (parse-server)
我在 expressjs 上设置了解析服务器,例如 here。
但有时它不会显示 Parse 函数内部的错误。示例:
// Parse Server is setup
// Parse Server plays nicely with the rest of your web routes
app.get('/', function(req, res) {
var pageQuery = new Parse.Query('Page');
pageQuery.get('id').then(function(page) {
someObject.undefinedProp = false;
res.send(page);
}, function(error) {
res.send(error);
});
});
没有显示错误,但使用此代码:
// Parse Server is setup
// Parse Server plays nicely with the rest of your web routes
app.get('/', function(req, res) {
someObject.undefinedProp = false;
res.send('ok');
});
我显示了这个错误:
ReferenceError: someObject is not defined
(对于此示例,我的配置与 Parse Server Example 完全相同)
我只想在我的 Parse 函数中显示错误。
有什么想法吗?
感谢您的帮助!
你的问题其实是Promises引起的问题
当您调用 pageQuery.get('id')
时,get
方法 returns 一个 Promise 实例。 Promise 的 then
方法是您设置将在 get
操作成功完成时触发的回调的方式。
为了获得对当您尝试引用 someObject.undefinedProp
时应该发生的错误的引用,您还需要通过调用它的 Promise object 设置错误处理程序catch
方法。
app.get('/', function(req, res) {
var pageQuery = new Parse.Query('Page');
pageQuery.get('id').then(function(page) {
someObject.undefinedProp = false;
// the error thrown here will be caught by the Promise object
// and will only be available to the catch callback below
res.send(page);
}, function(error) {
// this second callback passed to the then method will only
// catch errors thrown by the pageQuery.get method, not errors
// generated by the preceding callback
res.send(error);
}).catch(function (err) {
// the err in this scope will be your ReferenceError
doSomething(err);
});
});
在这里,查看以下文章并向下滚动到部分标题 "Advanced mistake #2: catch() isn't exactly like then(null, ...)"。
https://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html
我在 expressjs 上设置了解析服务器,例如 here。
但有时它不会显示 Parse 函数内部的错误。示例:
// Parse Server is setup
// Parse Server plays nicely with the rest of your web routes
app.get('/', function(req, res) {
var pageQuery = new Parse.Query('Page');
pageQuery.get('id').then(function(page) {
someObject.undefinedProp = false;
res.send(page);
}, function(error) {
res.send(error);
});
});
没有显示错误,但使用此代码:
// Parse Server is setup
// Parse Server plays nicely with the rest of your web routes
app.get('/', function(req, res) {
someObject.undefinedProp = false;
res.send('ok');
});
我显示了这个错误:
ReferenceError: someObject is not defined
(对于此示例,我的配置与 Parse Server Example 完全相同)
我只想在我的 Parse 函数中显示错误。
有什么想法吗?
感谢您的帮助!
你的问题其实是Promises引起的问题
当您调用 pageQuery.get('id')
时,get
方法 returns 一个 Promise 实例。 Promise 的 then
方法是您设置将在 get
操作成功完成时触发的回调的方式。
为了获得对当您尝试引用 someObject.undefinedProp
时应该发生的错误的引用,您还需要通过调用它的 Promise object 设置错误处理程序catch
方法。
app.get('/', function(req, res) {
var pageQuery = new Parse.Query('Page');
pageQuery.get('id').then(function(page) {
someObject.undefinedProp = false;
// the error thrown here will be caught by the Promise object
// and will only be available to the catch callback below
res.send(page);
}, function(error) {
// this second callback passed to the then method will only
// catch errors thrown by the pageQuery.get method, not errors
// generated by the preceding callback
res.send(error);
}).catch(function (err) {
// the err in this scope will be your ReferenceError
doSomething(err);
});
});
在这里,查看以下文章并向下滚动到部分标题 "Advanced mistake #2: catch() isn't exactly like then(null, ...)"。
https://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html