MongoDBに複数の異なるJSONオブジェクトを挿入し、データの一部が既にデータベースに存在するかどうかをチェックし、各JSONオブジェクトについてはそうではありません。 expressjsで私はどうすればいいですか?私はMongoDBを使ってmongojsパッケージを使用しています。私が入力したコードは以下の通りです:Express.js-ループごとに3つの依存MongoDBクエリを順番に呼び出す
app.post('/addcard/:id', function(req, res) {
console.log("Received Add Card Request");
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDate();
var yrval = req.body.yrval;
var monval = req.body.monval;
var dateval = req.body.dateval;
for (var i=0;i<req.body.phone.length;i++){
//console.log(i);
var card = new Card({
cardType : req.body.cardtype,
cardTitle : req.body.cardtitle,
allowMultipleStore : false,
phoneNumber : req.body.phone[i],
messageUser : req.body.message,
expiryDate : new Date(year+yrval,month+monval,day+dateval),
creditPoints : req.body.creditpoints,
punchCount : req.body.punch,
messageReachPunchLimit : req.body.limitmessage,
merchantUsersId : mongoose.Types.ObjectId(req.body.merchantuserid),
merchantId : mongoose.Types.ObjectId(req.params.id)
});
console.log(card);
db.carddata.insert(card, function (err,docInserted){
// console.log(card);
console.log(i);
if (err) throw err;
db.userdata.find({phoneNumber:req.body.phone},function (err,docs){
console.log("hiss");
if (err) throw err;
if (docs.length!=0){
var carduser = new CardUsersAssignment({
cardId : docInserted._id,
userId : docs[0]._id,
remainingCreditPoints : req.body.creditpoints,
remainingPunchCount : req.body.punch
});
db.carduser.insert(carduser,function (err){
console.log(" Card Details saved successfully_existing");
//console.log(i);
})
}//If (docs.length!=0)
else{
console.log(" Card Details saved successfully");
}
})//Finding by PhoneNumber
console.log(i+1);
})//Insert Function
console.log("hi");
} // End of For Loop
res.json({
success:true,
message:"Hello. You did it!"
});
});
このコードは、私が逐次実行のために書いていたかのように書かれています。私はNodeJSが非同期であることを知っています。 async.waterfallを試しましたが、mongodbクエリ関数でエラーが発生しています。どんな助けも素晴らしいだろう。私はNodeJS noobです。同様のシナリオについて議論する記事へのリンクも素晴らしいでしょう。
これは滝の方法で固定されなければなりません。 async.waterfallコードをここに入れて、実行時にエラーが出ることはありますか? –
私は以下のページで与えられた例に従っています: https://codeforgeek.com/2016/04/asynchronous-programming-in-node-js/ 機能を除いて、db.carddata.insert()を追加しました。前のコードでやったように。 –