In Javascript var
являются «областью действия». Таким образом, область действия barberInfo
является функцией обратного вызова. Переменная не доступна вне функции.
То, что вы пытаетесь сделать, это напечатать значение response
. Вы должны сделать это внутри функции обратного вызова. Если вы сделаете это снаружи, это будет выполнено немедленно, и вы не получите ожидаемый результат. Таким образом, следующий код даст « неверные результаты ».
let response = null; // define response variable
collection.findOne({id:searchId}, function(err, result) {
response = result;
});
console.log(response); //this line will be executed immediately after "findOne" call.
//It will not wait for the callback function execution.
Попробуйте написать код с помощью обещаний.
collection.findOne({id:searchId}).then(result => {
console.log(result);
return result;
}).catch(err => {
//handle error
});