inhaler
inhaler

Reputation: 425

Updating a collection in mongodb

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

Answers (1)

Bertrand Martel
Bertrand Martel

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

Related Questions