变量 id 未在 moongoose 函数 NODE JS 之外定义
2020-01-29
75
我想将两个不同的值分配给同一个变量,这取决于 moongose 查询的结果,但是我得到了这个错误
events.js:187
throw er; // Unhandled 'error' event
^
ReferenceError: barberInfo is not defined
这是我在 node js 中的代码
barber.findOne({id:idBarber},function(err,response){
if(response){
//if barber exists in the database
barberInfo =response.toJSON();
}else{
//if no exists in the database
barberInfo={
id:0,
stairs:0.0,
numberServices:0,
urlImg: "https://i.pinimg.com/736x/a4/93/25/a493253f2b9b3be6ef48886bbf92af58.jpg",
name: "Sin",
lastName : "Asignar",
phone : "000-000-0000"
}
}
});
console.log(barberInfo);
我在两种情况下定义了变量,我该如何定义它?
3个回答
在 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
});
Aditya Bhave
2020-01-29
barberInfo
未定义,您需要在分配任何值之前定义它。
barber.findOne({id:idBarber},function(err,response){
let barberInfo;
if(response){
//if barber exists in the database
barberInfo =response.toJSON();
}else{
//if no exists in the database
barberInfo={
id:0,
stairs:0.0,
numberServices:0,
urlImg: "https://i.pinimg.com/736x/a4/93/25/a493253f2b9b3be6ef48886bbf92af58.jpg",
name: "Sin",
lastName : "Asignar",
phone : "000-000-0000"
}
}
console.log(barberInfo);
});
Balaj Khan
2020-01-29
barberInfo 变量未在回调函数外定义。您需要将行:
console.log(barberInfo);
移到回调函数内
Nadir Latif
2020-01-29