首页 > 解决方案 > NodeJs,如何访问模块内的变量

问题描述

我在模块外部创建了一个布尔变量,并尝试更改模块内部的变量,但是当我在模块外部调用变量时,它返回旧值,而不是模块中的值。

var namecontroll = false;
dbo.collection('users').findOne({name: data.name}, (ferr, fres) => {
    if (ferr) throw ferr
    if (fres) {
        var namecontroll = false;
        io.emit('signup feedback',"This username was taken by another user.");
    }
    else {
        var namecontroll = true;
    }
    db.close;
})

当我通过console.log控制模块中的值时,它可以返回'true'。但是当我控制模块时,即使提供了条件,它也会返回“false”。我该如何解决这个问题?

标签: node.js

解决方案


首先要考虑到您的代码是异步的,您可以在函数执行完成之前检查变量值。至于它的结构,您在函数内部namecontroll使用关键字重新声明变量var,这意味着您在函数内部创建新变量而不是更改它的值。尝试做这样的事情:

var namecontroll = false;
dbo.collection('users').findOne({name: data.name}, (ferr, fres) => {
    if (ferr) throw ferr
    if (fres) {
        namecontroll = false;
        io.emit('signup feedback',"This username was taken by another user.");
    }
    else {
        namecontroll = true;
    }
    db.close;
})

推荐阅读