javascript - Jade JS 不输出对象属性,但输出 _id 和 __v 好吗?

标签 javascript node.js mongodb mongoose pug

我遇到了 Jade 模板引擎或其他问题;我不知道。当我遍历一个对象并输出它的属性时,它似乎没有输出“country”属性,但输出了“id”和“_v”属性。我希望“sections”属性不会输出,因为它本身就是一个对象,但它在控制台日志中没有说明任何内容。

架构:

var CSVSchema = {
    country: {type: String}
,   sections: [
        {
            title: {type: String}
        ,   sub_sections: [
                {
                    title: {type: String}
                ,   value: {type: String}
                }

            ]
        }
    ]   
};

搜索 Controller : 这将在 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 对象: 这是存储在数据变量中的内容,通过搜索 Controller 传递给 Jade 模板。出于某种原因,country 属性出现在 _id 属性之前,而 sections 不是?我编辑了 mongodb 中的条目,将 country 放在 _id 之后,但没有解决任何问题。

{ country: 'India',
  _id: 51cda5163c7286000000000c,
  sections: 
   [ { sub_sections: [Object],
       _id: 51cda5163c72860000000011,
       title: 'Undergraduate' },
     { sub_sections: [Object],
       _id: 51cda5163c7286000000000d,
       title: 'Postgraduate' } ],
  __v: 0 }

Jade 模板: 为了测试 Jade 的渲染没有问题,我插入了一个测试属性来查看它是否输出正常,结果确实如此。

for result in results
        - result.test = 'TESTING123'
        ul
            li #{result._id}
            li #{result.test}
            li #{result.country}
            li #{result.sections}
            li #{result.__v}

输出:

  • 51cd926b46baa54df700000c
  • 测试123
  • 0

Package.json: 我尝试降级到 Jade 0.30.x,它破坏了我的模板,说了一些类似“body is not defined?”的内容。

{
    "name": "test",
    "description": "test",
    "keywords": [
        "express",
        "mongoose",
        "mongodb",
        "passport"
    ],
    "version": "0.0.1",
    "private": true,
    "engines": {
        "node": "0.10.x",
        "npm":  "1.2.x"
    },
    "dependencies": {
        "express": "3.3.1",
        "jade": "0.31.x",
        "mongoose": "3.6.13",
        "connect-mongo": "0.3.2",
        "connect-flash": "0.1.1",
        "passport": "0.1.17",
        "passport-local": "0.1.6",
        "csv": "0.3.3",
        "moment": "2.0.0"
    },
    "devDependencies": {
        "mocha": "1.11.0",
        "nodemon": "0.7.8"
    }
}

最佳答案

在将对象传递给 Jade 模板之前,我通过字符串化和解析对象解决了这个问题。

results = JSON.parse(JSON.stringify(results))

关于javascript - Jade JS 不输出对象属性,但输出 _id 和 __v 好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17420893/

相关文章:

javascript - Knockout.js 自定义绑定(bind) "Update Function is Not called "

node.js - 我尝试使用 NPM 安装 IPFS 模块,但出现以下错误

node.js - 要求与导入 Express 路由器到前缀路由

mongodb - 如果大多数服务器宕机,如何访问 mongo 副本集?

javascript - vis.js 3D条形图: Set bar color based on z-coordinate value

java - 显示 Jsoup 元素

javascript - jQuery UI 选项卡 : show another div with each active tab

node.js - 安装 Angular-cli

mongodb - Mongo Scala Play - java.lang.NoSuchMethodError : com. mongodb.ConnectionString.getApplicationName()Ljava/lang/String;]

mongodb - 使用先前的序列号或时间戳运行时,从 Kinesis 读取给出空记录