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 %}
然后它输出它,所以 apsingle
以 null
的形式进入模板。
安迪要求的输出:
{ _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();
我正在尝试在我的模板中使用 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 %}
然后它输出它,所以 apsingle
以 null
的形式进入模板。
安迪要求的输出:
{ _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();