Node.js 在couchdb函数之外调用变量?

Node.js 在couchdb函数之外调用变量?,node.js,couchdb,nowjs-sockets,cradle,Node.js,Couchdb,Nowjs Sockets,Cradle,我在让couchdb的响应处理程序处理node.js和now.js时遇到了很多麻烦。我的目标是给客户或小组回电话,告诉他们已经找到的某些信息以及客户发送的信息 everyone.now.login = function(){ var username = this.now.lusername; var password = this.now.lpassword; var test; db.get(this.now.lusername, function (err, doc, test, user

我在让couchdb的响应处理程序处理node.js和now.js时遇到了很多麻烦。我的目标是给客户或小组回电话,告诉他们已经找到的某些信息以及客户发送的信息

everyone.now.login = function(){
var username = this.now.lusername;
var password = this.now.lpassword;
var test;
db.get(this.now.lusername, function (err, doc, test, username) {
    if (err) {
        console.log(+ username + " doesn't exist!");

    } else  {
        console.log('Found user!');
        console.log(doc);
        test = 1;
   }
    });
    console.log(test);
}
我在这里以测试为例。我在db.get外部声明它,在内部分配一个值以进行反馈,但当console.log在外部运行时,它没有值

我只是不明白,还是出了什么问题


(我确实可以使用doc。(无论值是多少)但是我想在这个调用之外将一个特定的变量传递回客户端)

test变量在
console.log
中没有值,因为CouchDB响应还没有到达。登录函数执行以下步骤

  • 设置一些变量(
    用户名
    密码
    测试
    未定义)
  • 开始CouchDB提取(对于
    this.now.lusername
    ),并指定一个函数在提取完成后运行
  • 运行仍然未定义的
    console.log(test)
  • CouchDB响应完成,步骤2中的函数运行
  • 我所做的就是使用函数调用

    everyone.now.login = function(){
      var username = this.now.lusername;
      var password = this.now.lpassword;
    
      db.get(this.now.lusername, function (err, doc, test, username) {
        if (err) {
            console.log(+ username + " doesn't exist!");
    
        } else  {
            console.log('Found user!');
            console.log(doc);
            login_complete(doc);
       }
      });
    
      function login_complete(doc) {
        console.log('The login finished! Doc is ' + doc)
      }
    }
    
    这样代码看起来仍然正确(代码的“故事”大部分从上到下流动),但它也正确执行(只有在登录实际完成后,
    login\u complete()
    函数才会运行)