【问题标题】:Node.js + Express.js access result of db.collectiondb.collection 的 Node.js + Express.js 访问结果
【发布时间】:2014-08-28 08:42:37
【问题描述】:

我刚开始接触node.js和express.js,有一些小问题希望有人能解答。

在我的路线中,我有以下代码

router.get('/:slug', function(req, res) {
 var subject = req.params.slug;
 var subjectTitle ='';
 var db = req.db;
 db.collection('subjects').findOne({slug:subject}, function(err, result) {
   console.log(result);
   console.log(result.title);
   subjectTitle = result.title;
 });

 res.render('subject', { title: subject});
});

我不明白如何在调用它的函数之外访问 db 调用的结果。

理想情况下,我想将 result.title 作为主题发送回渲染调用。

任何帮助都会很棒

谢谢

【问题讨论】:

  • db.collection 是异步函数调用,你应该把res.render('subject', { title: subject}); 放入function(err, result){...}

标签: database node.js express


【解决方案1】:

这就是答案。

router.get('/:slug', function(req, res) {
     var subject = req.params.slug;
     var subjectTitle ='';
     var db = req.db;
     db.collection('subjects').findOne({slug:subject}, function(err, result) {
       console.log(result);
       console.log(result.title);
       res.render('subject', { title: result.title});
     });

    });

【讨论】:

  • 这称为闭包。如果你在一个函数内部定义一个函数,它就有父作用域。
猜你喜欢
  • 1970-01-01
  • 2019-07-26
  • 2011-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-25
相关资源
最近更新 更多