0

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

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

每当我调查 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”。

4

1 回答 1

2

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

于 2012-09-10T21:20:41.927 回答