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;

}

ハッシュ化されていないパスワードの使用とデータベースからのすべてのユーザーの読み取りの両方が、最終製品では禁止されていることを認識しています-誰かがそれについてコメントしたい場合に備えて.

ビューへのアクセス方法に問題がある場合: ビュー名が「password_by_email」の「_design/accounts」というデザイン ドキュメントを使用しています。

4

1 に答える 1

2

への呼び出しdb.viewは非同期であるため、ヒットしたときreturn usersByEmail、オブジェクトはまだ設定されていません。非同期コードから値を返すことはできません。結果に依存するコードを実行するコールバックを作成する必要があります。

于 2012-09-10T21:20:41.927 に答える