【问题标题】:how does mongo determine how to serialize an object?mongo如何确定如何序列化一个对象?
【发布时间】:2018-02-27 19:16:37
【问题描述】:

我正在与来自bignumber.js packageBigNumbers 合作

我是 Mongo 的新手,我很好奇 Mongo 如何知道如何正确序列化这个对象(或任何其他对象)?

我问是因为我有 2 个脚本,它们在插入这些对象的方式上看似相同,但在一个脚本中,BigNumbers 作为字符串插入到另一个脚本中,它们作为数字插入。

对象来自any 流,我需要将任何对象转换或强制转换为Altitude

示例代码:

export interface Altitude {
    altitude: BigNumber;
    minAltitude: BigNumber;
    maxAltitude: BigNumber;
}

... 'message' object of type any from stream ...
// this JSON back and forth stuff seems like it should be unnecessary
let jsonString = JSON.stringify(message);
let alt = JSON.parse(jsonString) as Altitude;    

collection.insert(alt, (error: MongoError, result: InsertOneWriteOpResult) => {
    ...
});

BigNumbers 插入字符串。

看到作为字符串插入到 Mongo 中的值,我尝试进一步强制该问题,只是为了看看它是否可以工作:

let alt = JSON.parse(jsonString) as Altitude;
let alt1 = {
    size: alt.altitude as BigNumber,
    minAltitude: alt.minAltitude as BigNumber,
    maxAltitude: alt.minAltitude as BigNumber,
};

collection.insert(alt1, (error: MongoError, result: InsertOneWriteOpResult) => {
    ...
});

但是,这些值仍然作为字符串插入。在我的其他脚本中,一切都是数字。

想法?

【问题讨论】:

    标签: node.js mongodb typescript


    【解决方案1】:

    MongoDB 使用BSON 序列化。实际的实现将取决于驱动程序。

    参考https://www.mongodb.com/json-and-bson

    【讨论】:

      猜你喜欢
      • 2021-11-10
      • 1970-01-01
      • 2022-12-14
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多