避免局部变量

时间:2012-01-22 22:12:43

标签: javascript node.js

如果涉及到这一点,我经常在设计方面遇到问题:

var pages,
    book
;

Book.findOne( { title: "First Book" }, function(err, doc) {
  pages = doc.pages;

  console.log( pages );
} );

res.json(pages, 200);

pages未定义,但我将其设置为doc.pages。如果我将res.json(pages, 200)移动到findOne的回调中,则此脚本可以正常运行。

我在使用JavaScript时是否遵循了错误的模式/代码设计,或者是否有一个解决方案可以使res.json()远离回调,除了使pages全局?

1 个答案:

答案 0 :(得分:6)

问题在于,当您找到匹配项时,您正在传递Book.findOne一个回调。然后,您重新调用res.json,并将其作为参数传递pages。了解此时回调将不会被执行是很重要的。你能在回调函数中移动响应吗?

Book.findOne({title: 'First Book'}, function (err, doc) {
  res.json(doc.pages, 200)
})