【发布时间】:2021-05-20 22:15:57
【问题描述】:
所以,我的 Mongoose 中有以下架构:
// 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 应用程序像第二段代码一样接收它们。
我希望我可以在 _keys 中存储一个 json 文件,以便按照我需要的方式发送信息。
非常欢迎任何帮助或建议!
【问题讨论】:
-
_keys的预期 json 架构不是有效的 json! -
感谢@KayvanMazaheri,实际上我忘记输入正确的属性了,就像现在这样:_keys: [{ key: String, value: String }] 谢谢!
-
您实际上不能像这样“键入”,因为您告诉架构实际上要确保所有条目都遵循 { "key": "data ", "value": "data" }` 模式。所以这个模式说它必须有键
"key","value"并且没有其他名称。如果您希望它是“可变的”,那么您可以使用_keys: [Mixed]甚至只是_keys: []。您“可以”添加自定义验证以确保这始终是每个对象的 两个 键。但是模式类型本身不能单独做到这一点。 -
感谢@NeilLunn,这正是我所需要的,而且效果很好。