Javascript 如何在嵌套(mongoose)回调中更改json值
我想更改嵌套函数中的json数组,该函数是我在mongoose查询中创建的回调函数 我不明白为什么不可能在这个范围内更改json数组。任何尝试都会导致“default”的原始值,该值可由最后一个Javascript 如何在嵌套(mongoose)回调中更改json值,javascript,node.js,json,mongoose,Javascript,Node.js,Json,Mongoose,我想更改嵌套函数中的json数组,该函数是我在mongoose查询中创建的回调函数 我不明白为什么不可能在这个范围内更改json数组。任何尝试都会导致“default”的原始值,该值可由最后一个控制台显示。log(answer) 由于我是一名具有javascript新手技能的嵌入式C开发人员(最多),我想知道如何更改嵌套范围中的任何值。请分享我的函数显示这种行为的背景 欢迎任何帮助 功能pwdGen(主体){ var答案=[{ 错误:错误[“E004”], 用户:“”, 密码:“默认值”, 超时
控制台显示。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;
控制台日志(应答);
返回答案;
}
问题
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(用户)
用于检查它是否是数组哦,对了,谢谢您的提示!哦,我明白了-这意味着我刚刚定义了回调,它是在不同的上下文中执行的!?