【问题标题】:Calling variables outside couchdb function?在 couchdb 函数之外调用变量?
【发布时间】:2023-03-19 21:10:02
【问题描述】:

我在让 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。(无论值)但有一个特定的变量我想在此调用之外传递回客户端)

【问题讨论】:

    标签: node.js couchdb nowjs-sockets cradle


    【解决方案1】:

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

    1. 设置一些变量(usernamepasswordtest 未定义)
    2. 开始一个 CouchDB 提取(对于 this.now.lusername),并分配一个完成后运行的函数
    3. 运行 console.log(test) 仍然未定义
    4. 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_complete()函数仅在登录实际完成后运行)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-04
      相关资源
      最近更新 更多