如何使用Node.js和MongoDB创建表格制作工具

时间:2019-03-22 09:35:54

标签: node.js mongodb forms

我正在尝试使用 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
    }
}

是真的吗?还是有最佳实践? 如果我修改表单字段,如何控制数据呢?

1 个答案:

答案 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
        }
    ]
}