gpt4 book ai didi

javascript - 变量id未在moongoose函数NODE JS外部定​​义

转载 作者:太空宇宙 更新时间:2023-11-03 22:41:56 25 4
gpt4 key购买 nike

我想为同一个变量分配两个不同的值,具体取决于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);

我在两种情况下定义了变量,我该如何定义它?

最佳答案

在 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.

尝试使用 Promise 编写代码。

collection.findOne({id:searchId}).then(result => {
console.log(result);
return result;
}).catch(err => {
//handle error
});

关于javascript - 变量id未在moongoose函数NODE JS外部定​​义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59961645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com