2013-07-22 2 views
0

Эй, поэтому я использую серию async для создания массива с пользователем, найденным в результате поиска, чтобы просмотреть его, и посмотреть, являются ли они частью массива запросов друга пользователь вошел в систему. Однако по какой-то причине он всегда заканчивается как ложный, кто-нибудь замечает что-то неправильно с кодом ниже?Async series отвечает ложным, когда это должно быть верно

Вот код для файла маршрута:

exports.searchPost = function(req, res, err) { 
    User.find({$or:[ 
      {firstName: req.body.firstName}, 
      {lastName: req.body.lastName}, 
      {email: req.body.email}, 
      {phone: req.body.phone}] 
    }, function(err, users, userAdd) { 
     if(err) { 

      return res.render('searchError', {title: 'Weblio'}); 
     } else { 

      if(req.body.firstName=== '' && req.body.lastName==='' && req.body.email==='' && req.body.phone=== '') { 
       //maybe a diff page saying that is not a valid search page 
       return res.render('searchError', {title: 'Weblio'});   
      } else { 


        var userAdd, 
        series = []; 

        console.log('addman'); 
        users.forEach(function (user) { 
         series.push(function (callback) { 
          User.findById(req.signedCookies.userid, { 
           friendRequest: user._id 
          }, function() { 
           if (user._id === true) { 
           console.log('addman1'); 
           return callback(null, [user, true]); 
           } else { 
            console.log('addman2'); 
            console.log(user._id); 
            return callback(null, [user, false]); 
           } 
          }); 
         }); 
        }); 

       async.series(series, function (err, results) { 
       //results should be an in order array of values; 
       console.log(results); 
      return res.render('searchResults', {title: 'Weblio',   
        userAdded: results 
       }); 
      }); 

      } 

     } 
    }); 

}; 
+0

BTW, вы можете заменить 'forEach()'/'push()' на 'map()'. – SLaks

+0

Изменит ли он неправильный результат, хотя по какой-то причине я просто продолжаю получать false – Lion789

ответ

1

Я думаю, что есть несколько вопросов, где вы проверить if (user._id === true) {.

Первая проблема заключается в том, что ваш ожидающий user._id должен быть логическим, что, вероятно, не так. Простой if (user._id) { будет проверять, является ли это значением «truthy» - все номера, кроме 0, являются.

Однако, я думаю, что может быть второй вопрос там: что user переменная от вашего users.forEach(function (user) { - Я предполагаю, что вы на самом деле хотите, чтобы проверить результаты вашего User.findById(req.signedCookies.userid, {friendRequest: user._id} function(... кода. В этом случае вам нужно добавить параметры error, user2 в функцию обратного вызова или что-то в этом направлении.

+0

user2, как этот User.findById (req.signedCookies.userid, {10 friendRequest: user._id }, function (user2) {Или вы ссылаетесь для замены пользователя в функции обратного вызова для пользователя2? – Lion789

+0

Как вы сказали, 'function (user2) {', а затем 'if (user2._id) {...' –

+0

получение TypeError не может прочитать свойство '_id' of null для эта строка if (user2._id) { – Lion789

Смежные вопросы