2017-08-10 46 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: []

這讓我插入任何類型的對象的內部。