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