Mongoose混合类型模式被处理为String类型的键数组,但没有值

时间:2015-10-17 05:57:15

标签: python node.js mongodb mongoose schema

我有一个mongoose架构,看起来像这样:

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

由于某种原因,我的模型中的“额外”键是将键值对的字典处理为字符串数组,其中每个字符串都是字典中的键。例如,以下数据:

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

按如下方式处理:

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

此数据正在填充Python,“额外”字段作为Python字典提供。然后,整个数据集通过requests模块转发到REST API。这个“额外”字段的内容可能会有很大差异,这就是我在模型中将其定义为“混合”的原因。

有谁知道为什么mongoose会以这种方式解析这个字段?

1 个答案:

答案 0 :(得分:0)

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

request.post(url, myDictionary)

默认为数据键,当我应该使用时:

request.post(url, json=myDictionary)

当然,问题在于这里的Python日期时间对象无法序列化,所以我只是使用了time.time()。

关于我的mongoose模式,“extra”字段没有定义的模式,因此数据只是“按原样”提供。

希望这对某人在某些时候遇到类似问题非常有用。