javascript - Node.js 与 MongoDB 驱动程序 - 尝试使用键周围的引号获取有效的 JSON 输出

标签 javascript json node.js mongodb

我对 Node.js 非常陌生(对于 MongoDB 来说只是稍微不太新) - 我试图弄清楚如何使用 native 驱动程序生成有效的 JSON。下面的代码生成结果,但键没有用引号引起来,因此我的应用程序感到窒息,因为它认为它是无效的 JSON。

var MongoClient = require('mongodb').MongoClient;

MongoClient.connect("mongodb://localhost:27017/test", function(err, db) {
    if(err) { return console.dir(err); }

    var collection = db.collection('blah');

    var query = [
        { $group: {
            _id: {
                month: { $month: "$time" },
                day: { $dayOfMonth: "$time" },
                year: { $year: "$time" },
            },
            rule: { $avg: "$data.rule.avg" }
        } },
        { $sort: { "_id.year": 1, "_id.month": 1, "_id.day": 1 } }
    ];

    collection.aggregate(query, function(err, result) {
        console.dir(result);
        db.close();
    });
});

这会产生如下结果:

{ _id: { 
        month: 5, day: 16, year: 2014 
    },
    rule: 84 
}

问题是键没有用引号括起来。我这样做有什么问题吗?

我尝试过以下各种排列:

console.dir(toJSON(result));
console.dir(printjson(result));

谢谢!

最佳答案

基本上来自 mongodb 驱动程序的结果是一个 JavaScript 对象,而不是 JSON 字符串。当您执行 console.log(result) 时,node.js 将检查该对象,并尝试将其打印为 javascript 对象文字,这不需要在键周围加上引号。

如果您想要对象的 JSON 形式,只需将其序列化即可:

var JSONResult = JSON.stringify(result);
console.log(JSONResult)

关于javascript - Node.js 与 MongoDB 驱动程序 - 尝试使用键周围的引号获取有效的 JSON 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23918781/

相关文章:

javascript - 在 Youtube Click 上停止自定义 jQuery 幻灯片

javascript - 将 JSON 数据打印到 HTML div?

javascript - 如何在 Three.js 编辑器启动时加载 CTM 文件?

android - 从 JSON 对象中读取整数或字符串数​​组

javascript - 使用 Sequelize 如何指定要排序/限制的字段?

asp.net - 如何隐藏窗口

jquery $.post 第二个参数。 - json 还是查询字符串?

json - MongoDB,在 $convert(aggregation) 中将带逗号的字符串转换为 double 。无法解析数字 '1,533.07'

java - SHA-256 - NodeJS 和 Java 代码之间不匹配

node.js - 具有持久数据的NodeJS + RxDB + Electron