2015-05-23 2 views
0

Внутри этого бита кода задан параметр req, но когда я попадаю в обратный вызов, его больше нет. Я все равно могу добраться до него через res.req (странно). Что случилось? Я думал, что эта функция будет близка к окружающей среде.JavaScript-переменная poofs из существования в обратном вызове findById

function addDocument(req, res) { 
    // in scope 
    Request.findById(req.body._id, function(error, request){ 
     if (request) { 
      // disappeared 
     } else { 
      res.send404('Couldn\'t find a request with that ID.'); 
     } 
    }); 
} 
+0

Поскольку вы не используете 'req' переменную внутри функции, она не была захвачена. –

+1

Что вы подразумеваете под словом "it is not [defined]"? Как в нем возвращается значение 'undefined', или вы получаете опорную ошибку при попытке использовать ее или ...? ** Пожалуйста, покажите код, в котором вы пытались его использовать. ** – nnnnnn

+0

@nnnnnn Я понятия не имею, что произошло. Я пытался получить доступ к нему в реплике, но кажется, что сейчас все работает нормально. Так странно. –

ответ

1

В JavaScript вы d сделать это, все просто

function addDocument(req, res) { 
    // in scope 
    Request.findById(req.body._id, function(error, request){ 
     if (request) { 
      req.whatever; // What is Request.findById for ? 
     } else { 
      res.send404('Couldn\'t find a request with that ID.'); 
     } 
    }); 
} 
+0

Это то, что он делает. Но он говорит, что 'req.whatever' не работает. Действительно, 'req' не существует, когда он пытался. Я знаю, что он говорит, что это невозможно, но это то, что он утверждает. Нам нужно больше разъяснений. – slebetman

+0

согласен, возможно, существуют конфликты переменных ... где-то в коде мы не можем прочитать. –

+0

@slebetman Я понятия не имею, что произошло. Я пытался получить доступ к нему в реплике, но кажется, что сейчас все работает нормально. Так странно. –

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