如果涉及到这一点,我经常在设计方面遇到问题:
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
全局?
答案 0 :(得分:6)
问题在于,当您找到匹配项时,您正在传递Book.findOne
一个回调。然后,您重新调用res.json
,并将其作为参数传递pages
。了解此时回调将不会被执行是很重要的。你能在回调函数中移动响应吗?
Book.findOne({title: 'First Book'}, function (err, doc) {
res.json(doc.pages, 200)
})