Javascript 如何在嵌套(mongoose)回调中更改json值

Javascript 如何在嵌套(mongoose)回调中更改json值,javascript,node.js,json,mongoose,Javascript,Node.js,Json,Mongoose,我想更改嵌套函数中的json数组,该函数是我在mongoose查询中创建的回调函数 我不明白为什么不可能在这个范围内更改json数组。任何尝试都会导致“default”的原始值,该值可由最后一个控制台显示。log(answer) 由于我是一名具有javascript新手技能的嵌入式C开发人员(最多),我想知道如何更改嵌套范围中的任何值。请分享我的函数显示这种行为的背景 欢迎任何帮助 功能pwdGen(主体){ var答案=[{ 错误:错误[“E004”], 用户:“”, 密码:“默认值”, 超时

我想更改嵌套函数中的json数组,该函数是我在mongoose查询中创建的回调函数

我不明白为什么不可能在这个范围内更改json数组。任何尝试都会导致“default”的原始值,该值可由最后一个
控制台显示。log(answer)

由于我是一名具有javascript新手技能的嵌入式C开发人员(最多),我想知道如何更改嵌套范围中的任何值。请分享我的函数显示这种行为的背景

欢迎任何帮助

功能pwdGen(主体){
var答案=[{
错误:错误[“E004”],
用户:“”,
密码:“默认值”,
超时:0,
活动:错误
}];
user.find().where(“usertype”).equals(“超级用户”).select(“用户名密码”).exec(
功能(错误,用户){
if(users.isArray&&users.length==0){
console.log(“存在”);
回答[0]。密码=“存在\u pwd”;
}否则{
控制台日志(“空”);
回答[0]。password=“empty_pwd”;
}
}
);
回答[0]。user=“asdave”
回答[0]。超时=1;
控制台日志(应答);
返回答案;
}

问题

脚本本质上是指不执行同步的指令,如C、C++或java等。 解决方案

他们是来营救的

您需要这样做:

var users = user.find().where("usertype").equals("superuser").select("username password").exec();

users.then(function(user) {

        if(users.isArray && users.length==0) {
          console.log("exists");
          answer[0].password="exist_pwd";
        } else {
          console.log("empty");
          answer[0].password="empty_pwd";
        }      
})
编辑

只是JS是单线程的,每次只意味着一件事,但当它看到任何网络访问请求(如API调用)时,它会将该指令移动到浏览器中执行其指令的其他地方,当所有指令执行时,JS继续执行以下指令,移动的部分在其他地方执行,它的结果是合并


很好地理解了这个想法。

我认为您的代码中有语法错误:
Array.isArray(用户)
用于检查它是否是数组哦,对了,谢谢您的提示!哦,我明白了-这意味着我刚刚定义了回调,它是在不同的上下文中执行的!?