猫鼬混合类型模式正在作为字符串类型的键数组处理,但没有值

Mongoose mixed type schema is getting processed as an array of keys of type String, but no values

我有一个看起来像这样的猫鼬模式:

"datetime": {"type": Date}
"sequence": {"type": Number}
"extra": {"type": mongoose.Schema.Types.Mixed}

出于某种原因,我模型中的 "extra" 键正在将字典中的键值对处理为字符串数组,其中每个字符串都是字典中的一个键。比如下面的数据:

{
    "datetime": new Date(),
    "sequence": 10,
    "extra": {"val1": 5, "val2": "hello"}
}

正在按如下方式处理:

{
    "datetime":  [Date object]
    "sequence": 10,
    "extra": ["val1", "val2"]
}

此数据正在 Python 中填充,"extra" 字段作为 Python 字典提供。然后通过 requests 模块将整个数据集转发到 REST API。这个 "extra" 字段的内容可以有很大的不同,这就是为什么我在我的模型中将它定义为 "mixed"。

有谁知道为什么 mongoose 会这样解析这个字段?

我认为我的问题与 request 的可选数据/json 参数之间的差异有关。我正在使用:

request.post(url, myDictionary)

默认为数据密钥,而我本应使用:

request.post(url, json=myDictionary)

当然,这里的问题是 Python datetime 对象不能在这里序列化,所以我只是用 time.time() 代替。

关于我的 mongoose 模式,"extra" 字段没有定义的模式,因此只提供数据 "as-is"。

希望这对有人在某个时候遇到类似问题的情况有用。