javascript - 了解 Express js 中的匿名函数

标签 javascript node.js express

我是表达新手,正在尝试了解 RESTful 操作中的回调。在下面的 PUT 请求中,我对下面粗体显示的行感到困惑。为什么将 response.pageInfo.book 设置为匿名函数中的第二个参数 (result)?这似乎有点武断。

此外,检查其中一些参数(reqresresult 等)的最佳方法是什么?当我 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/

相关文章:

node.js - Firebase 3.3.x Nodejs - createUserWithEmailAndPassword 不是函数

node.js - 在 Node.js 事件循环中 - 回调说 i/o 事件说 'new HTTP request received' 在 'I/O Callbacks' 阶段或 'Poll' 阶段执行

node.js - 需要 node.js 中的类似 Olark 的软件

express - CORS 不适用于 apollo-server-express

javascript - 在每个路由调用上执行中间件

javascript - 如何分别对两个变量的计数进行动画处理

javascript - 使用jQuery和JavaScript在按钮上添加开关行为

javascript - 重复的表单字段

javascript - 使用 JavaScript 和 Twitter API 加载推文

node.js - 在 hbs 中表达 res.locals.someVariable 的使用(handlebars 模板)