Mongoose:直接将JS对象插入db

wil*_*age 8 javascript mongoose mongodb node.js express

好的,我有一个JS对象,通过AJAX发布到nodejs后端.我想将这个js对象直接插入到我的mongoose db中,因为对象键已经与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');
});
Run Code Online (Sandbox Code Playgroud)

但是想把它修剪成这样的(性感和动态):

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');
});
Run Code Online (Sandbox Code Playgroud)

Tho*_*aum 9

如果您使用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插件将筛选出在模式没有明确设定任何值,但它仍有类型检查和验证高达猫鼬.通过在架构中设置适当的验证方法,您可以免受任何注入攻击.

编辑:假设您已经实现了插件,您应该能够使用此代码.

app.post('/items/submit/new-item', function(req, res){
  new itemModel(req.body.formContents).save(function (e) {
    res.send('item saved');
  });
});
Run Code Online (Sandbox Code Playgroud)