我正在尝试在节点/ 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
时,尚未填充该对象。您根本无法从异步代码返回值;您需要让其进行回调,该回调将执行依赖结果的代码。