2016-04-07 39 views
0

我用Sails/Waterline將用戶輸入存儲到MongoDB中,並且因爲字段的類型取決於他們的設置,我發現很難找出存儲數據的最佳方式。風帆/水線模型幫助 - 如何存儲可能是數組,json或字符串的數據?

「surveyField」模型是這樣的:

// SURVEY FORM FIELD DEFINITIONS 

module.exports = { 
    attributes: { 
    name: { 
     type: 'string', 
     required: true 
    }, 
    label: { 
     type: 'string', 
     required: true 
    }, 
    constraints: { 
     type: 'string', 
     enum: ['none', 'unique', 'combo', 'same'], 
     required: true, 
     defaultsTo: 'none' 
    }, 
    isRequired: { 
     type: 'boolean', 
     required: true, 
     defaultsTo: false 
    }, 
    attributeType: { 
     type: 'string', 
     enum: ['boolean', 'text', 'localizedText', 'enum', 'localizedEnum', 'number', 'money', 'date', 'time', 'dateTime'], 
     required: true 
    } 
    } 
} 

用戶將已添加的任何數量的這些字段以它們的形式,因此它們的形式將包含到他們選擇的類型的字段的參考。在構建表單時,我確切知道如何根據這些信息處理/顯示每個字段,但保存信息證明有點困難,因爲該模型需要爲值字段假定類型。

「surveyData」模型的樣子:

module.exports = { 
    attributes: { 
    value: { 
     **type: 'string' // THIS IS WHERE THE ISSUE IS** 
    }, 
    surveyFieldType: { 
     model: 'surveyFieldType', 
     required: true 
    }, 
    survey: { 
     model: 'survey', 
     required: true 
    }, 
    user: { 
     model: 'user', 
     required: true 
    } 
    } 
} 

出現該問題的當值可能是一個字符串,也可能是JSON ......或任何其他'standard data types.'

任何對此的幫助將不勝感激。

** 編輯 **

我還需要這個值是搜索的爲好。

回答

0

也許改變一下。而將交易答案作爲更復雜的價值而不僅僅是價值。將類型更改爲JSON &構建自定義驗證器。

attributes: { 
    value: { 
     type: 'json' 
    } 
} 

,使之湖是

{ 
    surveyFieldType: something, 
    value: { 
     type: 'Array', 
     value: [1,2,3] 
    }, 
    survey: survey, 
    user: user 
} 

您可以通過搜索現在,你已經夷爲平地類型的所有答覆。基於value.type,您可以爲json創建自定義驗證規則。

相關問題