【问题标题】:HTTP POST non standard JSON (MongoDB doc format)HTTP POST 非标准 JSON(MongoDB 文档格式)
【发布时间】:2016-02-11 07:23:59
【问题描述】:

我有一个 Mongo 管理 UI,我试图将一个完整的 MongoDB 文档(例如:可能包含 ObjectId、ISODate 元素)发送到 ExpessJS 服务器,以便插入/更新文档。我面临的问题是,由于语法不是标准 JSON,bodyParser 在执行 JSON.parse() 时返回 http 代码 400 - 错误请求。

我是否遗漏了一些非常明显的东西?我考虑过以纯文本形式发送 POST,然后自己解析它并在 ExpressJs 端创建一个对象。不过,我真的不想推出自己的自定义 JSON 解析器。有什么建议吗?

【问题讨论】:

    标签: javascript json node.js mongodb express


    【解决方案1】:

    因为,当你将 bson 转换为 json 时,bson 反序列化器会在 json 中添加类型信息。这不能被普通的 JSON 解析器识别。你应该使用 mongodb 扩展的 json 解析器。

    严格模式。 BSON 类型的严格模式表示符合 JSON RFC。任何 JSON 解析器都可以将这些严格模式表示解析为键/值对;但是,只有 MongoDB 内部 JSON 解析器可以识别格式所传达的类型信息。

    检查this

    【讨论】:

    • 我了解 BSON 与 JSON,但如果无法通过 JSON.parse(),我仍然对如何将这些数据发送到我的后端感到困惑?在将 HTTP POST 发送到后端之前,是否有可以转换为严格模式 BSON 的库?
    • 不是非法的 json 格式 BSON 类型符合 JSON RFC。这样你就可以通过了。
    • 我不确定他们是否这样做。如果我执行 JSON.parse(),如果有 ObjectID() 或 ISODate(),则会失败。
    • 啊这似乎是我要找的。谢谢你让我走到这一步。您知道有没有可以根据此文档进行转换的库? :docs.mongodb.org/manual/reference/mongodb-extended-json
    • 我自己没用过,你可以看看这个github.com/mongodb-js/extended-json
    猜你喜欢
    • 1970-01-01
    • 2015-03-18
    • 2021-08-29
    • 2010-12-19
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    • 2017-12-31
    • 1970-01-01
    相关资源
    最近更新 更多