Javascript Jade JS不';t output objects属性,但输出_id和_vfine?
我有一个问题,要么与玉模板引擎,或其他东西;我不知道。当我循环一个对象并输出它的属性时,它似乎没有输出“country”属性,而是输出“id”和“\v”属性。我希望“sections”属性不会输出,因为它本身就是一个对象,但在控制台日志中没有说明任何内容 模式:Javascript Jade JS不';t output objects属性,但输出_id和_vfine?,javascript,node.js,mongodb,mongoose,pug,Javascript,Node.js,Mongodb,Mongoose,Pug,我有一个问题,要么与玉模板引擎,或其他东西;我不知道。当我循环一个对象并输出它的属性时,它似乎没有输出“country”属性,而是输出“id”和“\v”属性。我希望“sections”属性不会输出,因为它本身就是一个对象,但在控制台日志中没有说明任何内容 模式: var CSVSchema = { country: {type: String} , sections: [ { title: {type: String} ,
var CSVSchema = {
country: {type: String}
, sections: [
{
title: {type: String}
, sub_sections: [
{
title: {type: String}
, value: {type: String}
}
]
}
]
};
搜索控制器:
这将在mongodb数据库中搜索一个国家(使用mongoose),并呈现传递所附属性的Jade模板
exports.query = function (req, res) {
var query = req.body.query;
results.find({"country": query}, function (err, data){
res.render('search/query', {
title: 'Search Query'
, query: req.body.query
, results: data
, message: req.flash('error')
})
});
}
来自mongodb的JSON对象:
这是存储在数据变量中的内容,通过搜索控制器传递给Jade模板。出于某种原因,country属性出现在_id属性之前,而sections没有出现?我在mongodb中编辑了条目,将国家放在\u id之后,但这并没有解决任何问题
{ country: 'India',
_id: 51cda5163c7286000000000c,
sections:
[ { sub_sections: [Object],
_id: 51cda5163c72860000000011,
title: 'Undergraduate' },
{ sub_sections: [Object],
_id: 51cda5163c7286000000000d,
title: 'Postgraduate' } ],
__v: 0 }
翡翠模板:
为了测试Jade的渲染是否存在问题,我插入了一个测试属性,以查看它的输出是否良好,结果确实如此
for result in results
- result.test = 'TESTING123'
ul
li #{result._id}
li #{result.test}
li #{result.country}
li #{result.sections}
li #{result.__v}
输出:
var CSVSchema = {
country: {type: String}
, sections: [
{
title: {type: String}
, sub_sections: [
{
title: {type: String}
, value: {type: String}
}
]
}
]
};
- 51cd926b46baa54df700000c
- 测试123
- 0
传递到Jade模板中的
数据
对象是一组模型实例,而不是Jade似乎需要的普通JS对象。最干净的解决方法是使用“精益”猫鼬查询,而不是在查询方法链中插入调用:
results.find({"country": query}).lean().exec(function (err, data){
res.render('search/query', {
title: 'Search Query'
, query: req.body.query
, results: data
, message: req.flash('error')
})
});
这也会加快查询速度。传递到Jade模板中的
数据
对象是一组模型实例,而不是Jade似乎需要的普通JS对象。最干净的解决方法是使用“精益”猫鼬查询,而不是在查询方法链中插入调用:
results.find({"country": query}).lean().exec(function (err, data){
res.render('search/query', {
title: 'Search Query'
, query: req.body.query
, results: data
, message: req.flash('error')
})
});
这也将使您的查询更快。在将对象传递给Jade模板之前,我通过串接和解析对象解决了这个问题
results = JSON.parse(JSON.stringify(results))
在将对象传递给Jade模板之前,我通过字符串化和解析对象解决了这个问题
results = JSON.parse(JSON.stringify(results))
我通过字符串化和解析对象解决了这个问题。例如:results=JSON.parse(JSON.stringify(results))我通过字符串化和解析对象解决了这个问题。即:results=JSON.parse(JSON.stringify(results))