Reputation: 425
i am trying to update my collection based on a if i find a value. My save function looks like this `
router.post('/savePage', function (req, res) {
var page = req.body.page;
var query = {'pageId': page.pageId};
var paged = new pagedb(page);
pagedb.find(query, function (err, result) {
if(err) return console.error(err);
if(result.length > 0){
pagedb.update({'pageId': page.pageId}, page );
res.send('updated')
}
else{
paged.save(function (err) {
if (err) {
console.log('error saving page!');
throw err;
};
res.send('saved');
});
}
});
});`
My schema looks like this
var pageShema = new Schema({
pageId: {
type: String
},
logo: {
type: String
},
show: {
type: String
},
teamName: {
type: String
},
header1: {
type: String
},
header2: {
type: String
},
date: {
type: Date,
default: Date.now
},
offense:{
type: {}
},
defense:{
type: {}
}
});
My save works correctly by my data does not seem to update. I am using mongodb 3.2. In essence i want to replace the existing page with a new one. The page being sent in the request
Upvotes: 1
Views: 43
Reputation: 45382
The update
won't be performed unless you specify a callback or a call to exec()
. You can do either :
pagedb.update({ 'pageId': page.pageId }, page).exec();
Or :
pagedb.update({ 'pageId': page.pageId }, page, function(err, res) {
if (err) return console.error(err);
console.log(res);
});
Using mongoose, for debugging you can see the underlying mongodb query using debug
:
var mongoose = require('mongoose')
mongoose.set('debug', true);
Upvotes: 1