Wednesday, June 5, 2024
 Popular · Latest · Hot · Upcoming
195
rated 0 times [  200] [ 5]  / answers: 1 / hits: 16089  / 13 Years ago, fri, september 23, 2011, 12:00:00

Ok so I have a JS object that is being POSTed via AJAX to the nodejs backend. I want to insert this js object directly into my mongoose db as the object keys already match up perfectly with the db schema.



I currently have this (not dynamic and overly complex):



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');
});


But want to trim it down to something like this (sexy and dynamic):



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');
});

More From » mongodb

 Answers
5

If you use a plugin like this with mongoose (http://tomblobaum.tumblr.com/post/10551728245/filter-strict-schema-plugin-for-mongoose-js) you can just put together an array in your form, like newitem[item_title] and newitem[item_abv] -- or item[title] and item[abv]



You could also just pass the whole req.body if the elements match up there. That MongooseStrict plugin will filter out any values not explicitly set in your schema, but it still leaves checking types and validation up to mongoose. With proper validation methods set in your schema, you will be safe from any injection attacks.



EDIT: Assuming you have implemented the plugin, you should be able to use this code.



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

[#89962] Wednesday, September 21, 2011, 13 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
magdalena

Total Points: 364
Total Questions: 101
Total Answers: 92

Location: Namibia
Member since Mon, Nov 14, 2022
2 Years ago
;