我试图在post请求中使用两个查询,因为我想在满足某个条件时将一个东西推送到一个数组,并在满足不同条件时再次推送到该数组。但是,每当我尝试添加第二个User.find时,Node.JS就会崩溃。
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');
});
答案 0 :(得分:0)
在第二次请求中,您执行以下操作:
req.user.arr.save(function(err) {
if (err) throw err;
});
我认为req.user.arr
不是Mongoose模型,只是普通的array
。因此,在其上调用.save()
函数将导致错误。您可能想要req.user.save()
。