Mongoose:直接将JS对象插入db

时间:2011-09-23 09:06:43

标签: javascript mongodb node.js express mongoose

好的,我有一个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');
});

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

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 个答案:

答案 0 :(得分: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插件将过滤掉未在架构中明确设置的任何值,但它仍然会将检查类型和验证留给mongoose。通过在架构中设置适当的验证方法,您可以免受任何注入攻击。

编辑:假设您已实施该插件,您应该可以使用此代码。

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