2017-01-27 10 views
0

私は、特定の条件を満たすと1つのことを配列にプッシュし、別の条件を満たすと再び配列にプッシュしたいので、ポストリクエスト内で2つのクエリを使用しようとしています。しかし、2番目のUser.findを追加しようとするとNode.JSがクラッシュします。複数のクエリが使用されている場合のマングースエラー/ NodeJS?

router.post('/route', function(req, res){ 
    arr = []; //Empty array each time button is clicked before executing functions 

User.find({"propertyA":req.user.valueA, "propertyB": req.user.valueB}, function(err, users) { 
    for (var i = 0; i < users.length; i++) { 
     for (var j = 0; j < 3; j++) { //Push to array 3 times 
      req.user.arr.push(users[i].username); 
      req.user.save(function(err) { 
       if (err) throw err; 
      }); 
     }; 
    }; 
    if (err) throw err; 
}); 

User.find({"propertyC": req.user.valueC}, function(err, users) { 
    for (var i = 0; i < users.length; i++) { 
     for (var j = 0; j < 3; j++) { 
      req.user.arr.push(users[i].username); 
      req.user.arr.save(function(err) { 
       if (err) throw err; 
      }); 
     }; 
    }; 
    if (err) throw err; 
}); 

res.redirect('/users/examplepage'); 

});あなたの2番目のリクエストで

+0

エラーは何ですか? – nicovank

+0

model.wrappedPointCutでエラーが発生しました – gridproquo

+0

なぜforloopを使用して作成して配列を作成し、model.udpate({condition}、{$ push:array})を使用して配列を作成しないのですか –

答えて

0

、あなたは:

req.user.arr.save(function(err) { 
    if (err) throw err; 
}); 

を私はreq.user.arrはマングースモデルではないと思うが、単なるarray。したがって、.save()関数を呼び出すとエラーになります。おそらくreq.user.save()をしたかったでしょう。

+0

ArrがUser:arr :[{type:String}] – gridproquo

+0

はい、スキーマのすべてのプロパティで '.save()'を呼び出すことはできません。このメソッドはドキュメント上にのみ定義されています。 – SinDeus

関連する問題