Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jade JS不';t output objects属性,但输出_id和_vfine?_Javascript_Node.js_Mongodb_Mongoose_Pug - Fatal编程技术网

Javascript Jade JS不';t output objects属性,但输出_id和_vfine?

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} ,

我有一个问题,要么与玉模板引擎,或其他东西;我不知道。当我循环一个对象并输出它的属性时,它似乎没有输出“country”属性,而是输出“id”和“\v”属性。我希望“sections”属性不会输出,因为它本身就是一个对象,但在控制台日志中没有说明任何内容

模式:

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
Package.json: 我试图降级到Jade 0.30.x,但它破坏了我的模板,说了一些“body is not defined?”


传递到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))