在mongodb中更新集合

时间:2017-03-09 23:56:47

标签: javascript node.js mongodb

我正在尝试根据if我找到一个值更新我的收藏。我的保存功能看起来像这样       `

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

我的架构看起来像这样

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: {}
}
});

我的保存工作正常,我的数据似乎没有更新。我正在使用mongodb 3.2。本质上,我想用一个新页面替换现有页面。在请求中发送的页面

1 个答案:

答案 0 :(得分:1)

除非您指定回调或拨打update,否则exec()将无法执行。你可以这样做:

pagedb.update({ 'pageId': page.pageId }, page).exec();

或者:

pagedb.update({ 'pageId': page.pageId }, page, function(err, res) {
    if (err) return console.error(err);
    console.log(res);
});

使用mongoose进行调试,您可以使用debug查看基础mongodb查询:

var mongoose = require('mongoose')
mongoose.set('debug', true);