Mongoose: вставка объекта JS непосредственно в базу данных - PullRequest
8 голосов
/ 23 сентября 2011

Хорошо, у меня есть объект JS, который отправляется через AJAX в серверную часть nodejs.Я хочу вставить этот объект js непосредственно в мою базу данных mongoose, так как ключи объектов уже полностью соответствуют схеме db.

В настоящее время у меня есть это (не динамическое и не слишком сложное):

app.post('/items/submit/new-item', function(req, res){
    var formContents = req.body.formContents,
        itemModel = db.model('item'),
        newitem = new itemModel();

    newitem.item_ID         = "";
    newitem.item_title      = formContents.item_title;
    newitem.item_abv        = formContents.item_abv;
    newitem.item_desc       = formContents.item_desc;
    newitem.item_est        = formContents.item_est;
    newitem.item_origin     = formContents.item_origin;
    newitem.item_rating     = formContents.item_rating;
    newitem.item_dateAdded  = Date.now();

    newitem.save(function(err){
        if(err){ throw err; }
        console.log('saved');
    })

    res.send('item saved');
});

Но хочу урезать его до чего-то подобного (сексуального и динамичного):

app.post('/items/submit/new-item', function(req, res){
    var formContents = req.body.formContents,

    formContents.save(function(err){
        if(err){ throw err; }
        console.log('saved');
    })

    res.send('item saved');
});

1 Ответ

9 голосов
/ 23 сентября 2011

Если вы используете такой плагин с mongoose (http://tomblobaum.tumblr.com/post/10551728245/filter-strict-schema-plugin-for-mongoose-js), вы можете просто собрать массив в вашей форме, например newitem[item_title] и newitem[item_abv] - или item[title] и item[abv]

Вы также можете просто пропустить все req.body, если элементы там совпадают. Этот плагин MongooseStrict будет отфильтровывать любые значения, явно не заданные в вашей схеме, но все равно оставляет проверку типов и проверку вплоть до mongoose. С правильными методами проверки, установленными в вашей схеме, вы будете защищены от любых инъекционных атак.

РЕДАКТИРОВАТЬ: Предполагая, что вы реализовали плагин, вы сможете использовать этот код.

app.post('/items/submit/new-item', function(req, res){
  new itemModel(req.body.formContents).save(function (e) {
    res.send('item saved');
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...