使用res.render并同时发送json文件

Qui*_*oNa 0 javascript json mongodb node.js

我有这个明确的应用程序与mongoDB作为数据库和把手作为我的服务器端模板引擎.我在我的应用程序中没有使用AngularJS或Ajax.

在其中一个路由中,我必须呈现页面以及从数据库发送json文件.但是,我无法做到这一点.

这是我的路线代码片段:

router.get('/disks', function(req, res, next) {

      var risime;

  places.find({"category": "disks"}, function(err, disk){
      if(err){
        throw err;
      }

      risime= disk;
      console.log(risime);  //PROPERLY LOGS THE OUTPUT

  });

  res.render('diskPage', 
    {
      'disks': risime
    });

});
Run Code Online (Sandbox Code Playgroud)

在hbs中,我试图捕获它,但我没有得到json数据:

  var clrisime= "{{risime}}"
  console.log(clrisime); // DOES NOT LOG ANYTHIN
Run Code Online (Sandbox Code Playgroud)

我该如何实现?

Nic*_*k D 5

你犯了两个简单的错误:

router.get('/disks', function(req, res, next) {

  var risime;

  places.find({"category": "disks"}, function(err, disk){
      if(err){
        throw err;
      }

      risime= disk;
      console.log(risime);  //PROPERLY LOGS THE OUTPUT

      // this belongs inside your db callback
      res.render('diskPage', 
        {
          'disks': risime
          // if you call your field 'disks' here, you need to write {{disks}} in your template
        });
  });


});
Run Code Online (Sandbox Code Playgroud)
  1. 由于您希望在响应中使用数据库结果,因此需要将res.render放在回调中.
  2. 模板内的变量名称和渲染对象的字段名称必须相同.