Как создать форм-мейкер с помощью nodejs и mongodb - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь создать создатель форм с 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 голосов
/ 22 марта 2019

Наконец, я создал структуру моих создателей форм данных.

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
        }
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...