我是表达新手,正在尝试了解 RESTful 操作中的回调。在下面的 PUT
请求中,我对下面粗体显示的行感到困惑。为什么将 response.pageInfo.book
设置为匿名函数中的第二个参数 (result
)?这似乎有点武断。
此外,检查其中一些参数(req
、res
、result
等)的最佳方法是什么?当我 console.log
它时,它没有显示在我的终端或浏览器控制台中。
exports.BookEdit = function(request, response) {
var id = request.params.id;
Model.BookModel.findOne({
_id: id
}, function(error, result) {
if (error) {
console.log("error");
response.redirect('/books?error=true&message=There was an error finding a book with this id');
} else {
response.pageInfo.title = "Edit Book";
**response.pageInfo.book = result;**
response.render('books/BookEdit', response.pageInfo)
}
})
}
最佳答案
findOne 函数采用查询 ({_id : id}
) 和回调作为参数。 findOne 完成数据库查询后将调用回调。这种回调模式在nodejs中很常见。通常回调有 2 个参数
- 第一个错误仅在出现错误时设置。
- 第二个通常包含返回的值。在本例中,您将在数据库中找到一本书。
您粗体的行是将书籍对象分配给一个变量的位置,该变量将被发送回以在浏览器中呈现。它基本上是一些 javascript 对象。
您的第二个请求,要调试这个东西,您可以执行以下操作:
在代码中输入单词debugger;
例如
var id = request.params.id;
debugger;
接下来,不要像这样运行你的程序:
node myprogram.js
...使用调试标志运行,即
node debug myprogram.js
它将在开始时暂停,您可以按 c 然后 Enter 继续
接下来它将停在上面的debugger
行。输入 repl,然后 Enter,您就可以通过输入名称来检查对象和变量。
这工作得很好并且不需要安装。但是,您也可以采取更直观的方法并安装一个调试器,例如 node-inspector,它可以执行相同的操作,但在 Web 浏览器中。如果您使用好的 IDE(例如 webstorm),您还可以非常轻松地调试 Node.js。
关于javascript - 了解 Express js 中的匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32681967/