猫鼬-如何为模式中的字段定义2种类型

时间:2019-04-10 04:58:53

标签: node.js mongodb mongoose mongoose-schema

所以在我的付款模式中。我有一个价格字段,可以接受付款对象(货币,金额)或“ FREE”字符串。如何在模型中定义它。

price: { currency: "USD", amount: "100.00"}

price: "FREE"

因此,如何在模型中定义它,因为这不起作用:

...
price: { currency: String, amount: String } || String
...

1 个答案:

答案 0 :(得分:1)

您可以使用mixed模式类型

new Schema({
ofMixed:    [Schema.Types.Mixed],
})

但是您必须将其标记为文档中提到的

  

由于它是无模式类型,因此您可以将值更改为任何值   其他你喜欢的东西,但是猫鼬失去了自动检测和保存的能力   这些变化。告诉猫鼬混合类型的值具有   更改后,您需要调用doc.markModified(path),并将路径传递给   您刚刚更改的混合类型。

相反,您可以使用schema.path()并研究此mongoose issue以获得更好的解决方案,以避免在此处输入mixed

相关问题