Подтвердить что ты не робот

Как динамически создавать схему мангуста?

У меня есть приложение, которое работает на node.js с MongoDB и mongoose. Мое приложение просто отправляет/удаляет/редактирует данные формы, и для этого у меня есть такая модель Мангуста:

var mongoose = require('mongoose');

module.exports = mongoose.model('appForm', {
    User_id : {type: String},
    LogTime : {type: String},
    feeds : [   
    {
        Name: {type: String},
        Text : {type: String},
    }
    ]
});

и это работает просто отлично!

Теперь я хотел бы добавить функцию в форму, чтобы пользователь мог добавить поле (или поля) для формы, ввести в него текст и опубликовать его. Создание этой динамической функциональности на стороне клиента не является проблемой, но я понимаю, что мой mongoose.model должен быть правильно структурирован. Мой вопрос: как мне добавить эти значения переменных (динамически создаваемое имя данных формы и их текст) в схему мангуста?

Я вижу, что рекомендуется использовать strict: false и Schema.Types.Mixed. Тем не менее, я не могу понять... Что я пытался:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var feedSchema = new Schema({strict:false});

module.exports = mongoose.model('appForm', feedSchema);

Какие-нибудь советы? Заранее спасибо!

4b9b3361

Ответ 1

Примените параметр strict: false к существующему определению схемы, предоставив его в качестве второго параметра конструктору Schema:

var appFormSchema = new Schema({
    User_id : {type: String},
    LogTime : {type: String},
    feeds : [new Schema({
        Name: {type: String},
        Text : {type: String}
    }, {strict: false})
    ]
}, {strict: false});

module.exports = mongoose.model('appForm', appFormSchema);

Если вы хотите оставить feeds полностью схемой, что вы можете использовать Mixed:

var appFormSchema = new Schema({
    User_id : {type: String},
    LogTime : {type: String},
    feeds : [Schema.Types.Mixed]
}, {strict: false});

module.exports = mongoose.model('appForm', appFormSchema);