2017-03-09 28 views
1

値を見つけたら、aに基づいてコレクションを更新しようとしています。 My機能を保存私のスキーマがこのmongodbでコレクションを更新する

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

のように見える私のデータによって正しく作品を保存登録更新していないようです。この `

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

のように見えます。私はmongodb 3.2を使用しています。本質的に私は新しいものと既存のページを交換したい。リクエストで送信されたページ

+0

、それは次のようになりますreq.body.pageの値を、[更新パラメータ](https://docs.mongodb.com/manual/reference/method/db.collection.update/#update-parameter)としてそのままチェックし、変更しないで渡しています。 )。安全だと確信していますか? –

答えて

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

のマングースを使用して、あなたはdebugを使用して基本的なMongoDBのクエリを見ることができますデバッグのため:あなたの更新クエリで

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

ありがとう!それはトリック私はあなたの2番目の提案を使用しました。私はコールバック関数を導入しました。 – inhaler

関連する問題