2017-02-21 9 views
0

ここでレコードを取得したいのですが、わずかな変更を加えて同じレコードを挿入する必要があります。しかし、私は私の取得レコードで私が見つけた私の新しいレコードのデータを見ることができません。ここで私が試したことは、誰も私を助けることができますか?私はこの問題は、この行var institution = new Institution(data);であると思う:レコードを見つけて同じレコードをMongooseに挿入するにはどうすればいいですか?

Institution.find({_id:i._id}).exec(function (err, result) { 
       if(result) 
       transferData(result); 
       } 
      }); 
      }); 
     } 

     function transferData(data){ 
     var institution = new Institution(data); 
      institution.name = 'xxxx'; 
      institution.save(function (err, data) { 
      if (err) { 
       return res.status(400).send({ message: errorHandler.getErrorMessage(err) }); 
      } else { 
       console.log('Data Inserted Successfully'); 
      } 
      }); 
     } 

答えて

0

find()が故に、コールバックラインで条件に一致するドキュメントの配列を返します

var institution = new Institution(data); 
それがドキュメントを期待していますよう

が動作しません。配列ではありません。

Institution.findByIdAndUpdate(i._id, {name: 'xxxx'}, {upsert: true}, function (err, data) { 
    if (err) { 
     return res.status(400).send({ message: errorHandler.getErrorMessage(err) }); 
    } else { 
     console.log('Data Inserted Successfully'); 
    } 
); 
+0

こんにちはchridam、この方法意志、findByIdAndUpdate挿入:

Institution.findById(i._id).exec(function (err, result) { if (result) transferData(result); }); function transferData(data) { var institution = new Institution(data); institution.name = 'xxxx'; institution.save(function (err, data) { if (err) { return res.status(400).send({ message: errorHandler.getErrorMessage(err) }); } else { console.log('Data Inserted Successfully'); } }); } 

Aよりよい方法がfindByIdAndUpdate()方法を伴うだろう:として

あなたはfindById()メソッドを使用することができます新しい記録? – Daniel

+0

はい、上記の編集のように '{upsert:true}'オプションをパラメータとして指定した場合です。 – chridam

+0

Chidramは、新しいreocrdを挿入していませんが、updatin、私は適切に説明しなければ申し訳ありませんが、私の要件は、私はレコードを見つける場合、同じレコードが名前変更と新しいものとして挿入する必要があります。 – Daniel

関連する問題