node.js / javascript / couchdb视图到关联数组似乎不起作用

时间:2012-09-10 11:01:27

标签: javascript node.js couchdb

我正在尝试在node / couchdb / windows堆栈上创建一个webapp,但是由于缺乏经验而感到非常痛苦。

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

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

对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'。

1 个答案:

答案 0 :(得分:2)

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