Node.js 在属性Mongoose中保存键值对的架构
因此,我的猫鼬中有以下模式:Node.js 在属性Mongoose中保存键值对的架构,node.js,mongoose,Node.js,Mongoose,因此,我的猫鼬中有以下模式: // MODEL const PortletSchema = new Schema({ slug: String, version: String, environment: String, scap: Number, country: { type: String, uppercase: true }, _keys: [{ key: String, value: String
// MODEL
const PortletSchema = new Schema({
slug: String,
version: String,
environment: String,
scap: Number,
country: {
type: String,
uppercase: true
},
_keys: [{ key: String, value: String }]
});
在“_keys”数组中,我想保存一个键值JSON,如下所示:
// EXPECTED WAY TO STORE DATA INSIDE THE _keys PROPERTIES
{
[
{"key": "value"},
{"anotherKey": "Another Value" }
]
}
这样,我就可以在_keys属性中包含“动态键”,而不是像这样定义它:
// HOW I STORE THEM TODAY
[{ key: String, value: String }]
为什么我想要这个?:这将由Java应用程序通过服务读取,它希望映射该数组以获得如下键:${anotherKey}
目前,在将信息发送到Java应用程序之前,我创建了一个库,将密钥更改为前面提到的方式。因此java应用程序接收它们就像接收第二段代码一样
我希望我可以在_键中存储一个json文件,这样我就可以按需要的方式发送信息
欢迎任何帮助或建议 正如@NeilLunn所建议的,我使用了
\u键
值,如下所示:
// EXPECTED WAY TO STORE DATA INSIDE THE _keys PROPERTIES
{
[
{"key": "value"},
{"anotherKey": "Another Value" }
]
}
\u键:[]
这允许我在里面插入任何类型的对象。您可以使用Map
const schema: Schema = new Schema({
_keys: {
type: Map,
of: Object,
},
});
选中此项:
您期望的
\u键的json模式不是有效的json!谢谢@KayvanMazaheri,事实上我忘了按现在的样子放置正确的属性,它是这样的:_keys:[{key:String,value:String}]谢谢!实际上,您不能像这样“键入”,因为您告诉模式要做的实际上是确保所有条目都遵循{“key”:“data”,“value”:“data”}`模式。所以这个模式说它必须有键“key”,“value”
,而没有其他名称。如果您希望它是“可变的”,那么您可以使用\u键:[混合]
,甚至只使用\u键:[]
。您“可以”添加自定义验证,以确保每个对象始终只有两个键。但是模式类型本身不能单独做到这一点。谢谢@NeilLunn,这正是我所需要的,它工作得很好。