我正在尝试使用 Node.Js 和 MongoDB 创建表单制作者,但对数据结构感到困惑。
顺便说一下,我创建了一个form.model
来存储表单结构:
{
title: {
type: String,
required: [true, 'Form must have a title']
},
users: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
role: Number
}],
owner: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
required: true
},
active: {type: Boolean, default: true},
fields: [{
case_id: String,
label: String,
type: Number, //1:selective, 2:descriptive, 3:range
required: Boolean,
default: {
title: String,
value: Number,
},
placeholder: String,
items:[{
label: String,
value: Number,
}],
range:[{
min: Number,
max: Number,
step: Number,
default: {type: Number, default: 0}
}]
}]
}
和一个form.data.model
来存储表单数据:
{
form: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Form',
required: true
},
fields_data: {
"case_id": Object //value per case_id
}
}
是真的吗?还是有最佳实践? 如果我修改表单字段,如何控制数据呢?
答案 0 :(得分:0)
最后,我创建了我的表单制作者数据的结构。
form.model:
{
title: {
type: String,
required: [true, 'Form must have a title']
},
owner: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
required: [true, 'Form must have a owner']
},
active: {type: Boolean, default: true},
deleted: {type: Boolean, default: false},
fields: [{
name: String, //that field id and must be auto generated and not be modified by end user
label: String,
type: Number, //1:Selective, 2:Descriptive, 3:Range
required: Boolean,
placeholder: String,
selectable_items:[{
label: String,
value: Number,
selected: Boolean
}],
range:[{
min: Number,
max: Number,
step: Number,
default: {type: Number, default: 0}
}]
}]
}
form.users.model:
{
form: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Form',
required: true
},
users: [
{
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
role: Number //0:Admin, 1:Editor, 3:Viewer
}
]
}
form.values.model:
{
form: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Form',
required: true
},
values: [
{
name: String,
value: Object
}
]
}