我正在尝试在节点/ couchdb / windows堆栈上创建一个webapp,但是由于似乎缺乏经验而感到st脚。

在数据库中,有一个视图可返回所有用户密码。基于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”。

最佳答案

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

09-25 21:40