我将用户输入存储到带有Sails / Waterline的MongoDB中,并且因为字段类型取决于它们的设置,我发现很难找出存储数据的最佳方式。
' 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 :(得分:0)
也许稍微改变一下。并将处理问题的答案视为比价值更复杂的价值。将类型更改为JSON&构建自定义验证器。
attributes: {
value: {
type: 'json'
}
}
并使它成为湖泊
{
surveyFieldType: something,
value: {
type: 'Array',
value: [1,2,3]
},
survey: survey,
user: user
}
您现在可以通过搜索来搜索所有回复的扁平类型。基于value.type,您可以为json创建自定义验证规则。