Res.locals.apsinlge 不工作

Res.locals.apsinlge not working

我正在尝试在我的模板中使用 apsingle,但它不起作用。当我 console.log(apsingle); 时,我得到了正确的数据,但在模板中它根本不起作用。它return

部分路线:

(req, res, next) => {
      AP.findById(req.params.id).exec(function(err, foundAP){
        if(err){
            console.log(err);
        } else {
            res.locals.apsingle =  foundAP;
        }
    });
    next();
    }

在模板中循环和 if 语句:

{% if apsingle %}
   {%  for ap in apsingle  %}
     <tr>
      <td>{{ap.type}}</td>
      <td>{{ap.model}}</td>
      <td>{{ap.notes}}</td>
     </tr>
  {% endfor %}
{% endif %}

如果我做一个测试:

{% if apsingle == null %}
<h1>I'm NULL</h1>
{% endif %}

然后它输出它,所以 apsinglenull 的形式进入模板。

安迪要求的输出:

{ _id: objectID,
  type: 'ap',',
  model: ';lkj;l',

  notes: '',
  __v: 0,
  author:  id: someID
}

安迪提到的错误:

TypeError: Cannot read property 'name' of undefined
    at Object.eval [as tpl] (eval at <anonymous> (/home/ubuntu/workspace/asset-management/node_modules/swig/lib/swig.js:498:13), <anonymous>:10:1706)
    at compiled (/home/ubuntu/workspace/asset-management/node_modules/swig/lib/swig.js:619:18)
    at Object.eval [as tpl] (eval at <anonymous> (/home/ubuntu/workspace/asset-management/node_modules/swig/lib/swig.js:498:13), <anonymous>:7:154)
    at compiled (/home/ubuntu/workspace/asset-management/node_modules/swig/lib/swig.js:619:18)
    at /home/ubuntu/workspace/asset-management/node_modules/swig/lib/swig.js:559:20
    at /home/ubuntu/workspace/asset-management/node_modules/swig/lib/swig.js:690:9
    at tryToString (fs.js:456:3)
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:443:12)

尝试渲染页面以进行故障排除。也许您需要一种不同的方法,创建另一个文件并尝试填充它。然后你可以用 res.locals

再试一次
(req, res, next) => {
  AP.findById(req.params.id, (err, foundAP) => {
    if(err){
        console.log(err);
    } else {
        console.log(foundAP);
        res.render('yourview', {apsingle : foundAP)
    }
});
next();
}

在你看来试试这个。您不是在拉动一组对象,而只是一个。你不需要遍历它。

{% if apsingle %}
 <tr>
  <td>{{apsingle.type}}</td>
  <td>{{apsingle.model}}</td>
  <td>{{apsingle.notes}}</td>
 </tr>
{% endif %}

小心范围,将它放在一个您不希望它出现的括号内会导致很多问题。

开始:

(req, res, next) => {
      AP.findById(req.params.id).exec(function(err, foundAP){
        if(err){
            console.log(err);
        } else {
            res.locals.apsingle =  foundAP;
        }
    });
    next();
    }

已解决:

(req, res, next) => {
  AP.findById(req.params.id).exec(function(err, foundAP){
    if(err){
        console.log(err);
    } else {
        res.locals.apsingle =  foundAP;
    }
});
}
next();