2017-08-10 38 views
0

所以,我在我的猫鼬以下模式:模式,以节省键值对的属性 - 猫鼬

// 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文件,所以我会以我需要的方式发送信息。

任何帮助或建议是非常欢迎的!

+1

您预期的'_keys'的json模式不是有效的json! –

+0

感谢@KayvanMazaheri,其实我忘了把正确的属性,因为它是现在,是这样的: _keys:[{键:字符串值:字符串}] 谢谢! – diegoalmesp

+1

你实际上不能像这样“键入”,因为你告诉模式要做的事实际上是**确保**所有条目都遵循{“key”:“data”,“value”:“data”} '模式。所以这个模式表明它必须**具有“'键”,“值”和没有其他名称的键。如果你希望它是“可变的”,那么你使用'_keys:[Mixed]'或甚至只是'_keys:[]'。你“可以”添加自定义验证,以确保这总是**两**键只为每个对象。但架构类型本身不能单独做到这一点。 –

回答

0

作为@NeilLunn建议的,我使用的_keys值是这样的:

_keys: []

这让我插入任何类型的对象的内部。