【问题标题】:node.js/javascript/couchdb view to associative array does not seem to worknode.js/javascript/couchdb 视图到关联数组似乎不起作用
【发布时间】:2012-09-11 05:20:41
【问题描述】:

我正在尝试在 node/couchdb/windows 堆栈上创建一个 web 应用程序,但由于似乎缺乏经验而感到非常痛苦。

在数据库中,有一个视图返回所有有密码的用户。根据blog 的教程,我尝试通过我的节点代码访问视图。

每当我调查 users 或 users 变量的结构时,我都会得到一个未定义的对象。

对 getDatabase() 的调用已经在其他地方进行了测试,至少可以用于创建新文档。

function GetUser(login) 
{
    var users = GetUsers();
    return users[login];
}

function GetUsers() {
    var db = getDatabase();
    var usersByEmail = [];
    db.view("accounts", "password_by_email")
        .then(function (resp) {
            resp.rows.forEach(function (x) { usersByEmail[x.key] = x.value});
        });
    //usersByEmail['test'] = 'test';
    return usersByEmail;

}

我知道在最终产品中使用非散列密码以及从数据库中读取所有用户都是禁止的 - 以防万一有人对此发表评论。

如果我访问视图的方式出现问题:我正在使用名为“_design/accounts”的设计文档,视图名称为“password_by_email”。

【问题讨论】:

    标签: javascript node.js couchdb


    【解决方案1】:

    您对db.view 的调用是异步的,因此当您点击return usersByEmail 时,该对象尚未被填充。您根本无法从异步代码中返回值;你需要让它产生一个回调来执行依赖于结果的代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 2014-08-20
      相关资源
      最近更新 更多