2012-09-10 87 views
0

我正在嘗試在節點/ couchdb/windows堆棧上創建一個webapp,但由於似乎缺乏經驗而受到嚴重的刺激。node.js/javascript/couchdb查看到關聯數組似乎並不工作

在數據庫中,有一個視圖返回所有用戶的密碼。基於的教程,我嘗試通過節點代碼訪問視圖。

每當我調查用戶或用戶變量的結構時,我都會得到一個未定義的對象。

對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; 

}

我知道,無論是使用非散列密碼以及閱讀所有用戶數據庫是在最終產品望而卻步 - 以防萬一有人想上發表評論。

如果我訪問視圖的方式有問題:我正在使用名爲'password_by_email'的名爲'_design/accounts'的設計文檔。

回答

2

您致電db.view是異步的,所以當您點擊return usersByEmail時,該對象尚未填充。你不能從異步代碼返回值;你需要讓回調函數執行依賴於結果的代碼。