Sails / Waterline 模型帮助 - 如何存储可能是数组、json 或字符串的数据?
Sails / Waterline model help - how can I store data that might be an array, json or string?
我使用 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
}
}
}
用户将在他们的表单中添加任意数量的这些字段,因此他们的表单将包含对他们选择的字段类型的引用。构建表单时,我确切地知道如何 handle/display 基于此信息的每个字段,但事实证明保存信息有些困难,因为该模型需要为值字段假定一种类型。
'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.'
时会出现问题
如有任何帮助,我们将不胜感激。
** 编辑 **
我还需要此值也可搜索。
也许稍微改变一下。并将调查答案作为比值更复杂的值来处理。将类型更改为 JSON 并构建自定义验证器。
attributes: {
value: {
type: 'json'
}
}
让它成为那个湖
{
surveyFieldType: something,
value: {
type: 'Array',
value: [1,2,3]
},
survey: survey,
user: user
}
您现在可以通过它进行搜索,您已将所有回复的类型扁平化。基于 value.type,您可以为 json.
创建自定义验证规则
我使用 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
}
}
}
用户将在他们的表单中添加任意数量的这些字段,因此他们的表单将包含对他们选择的字段类型的引用。构建表单时,我确切地知道如何 handle/display 基于此信息的每个字段,但事实证明保存信息有些困难,因为该模型需要为值字段假定一种类型。
'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.'
时会出现问题如有任何帮助,我们将不胜感激。
** 编辑 **
我还需要此值也可搜索。
也许稍微改变一下。并将调查答案作为比值更复杂的值来处理。将类型更改为 JSON 并构建自定义验证器。
attributes: {
value: {
type: 'json'
}
}
让它成为那个湖
{
surveyFieldType: something,
value: {
type: 'Array',
value: [1,2,3]
},
survey: survey,
user: user
}
您现在可以通过它进行搜索,您已将所有回复的类型扁平化。基于 value.type,您可以为 json.
创建自定义验证规则