Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在属性Mongoose中保存键值对的架构_Node.js_Mongoose - Fatal编程技术网

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,这正是我所需要的,它工作得很好。