3

cradleを使用して、CouchDB のビューにパラメーターを渡すにはどうすればよいですか?


アップデート

_key(デフォルト)以外のプロパティに一致するドキュメントを返したいとします...

// document format
{
    _key,
    postHeading,
    postBody,
    postDate
}

postHeadingドキュメントとプロパティを照合したい場合はどうすればよいですか? ビューはどのように表示され、そのビューに検索文字列を渡すにはどうすればよいでしょうか?


現時点では、私はこれをやっています...

database.get("980f2ba66d5c8f9c91b9204a4d00022a", function (error, document)
{           
});

代わりにビューにアクセスしたいのですが、自動生成された 40 文字のキーの代わりに、別のプロパティに一致する文字列を渡したいと思います。

これに沿った何か...

database.save("_design/posts", {
    single: {
        map: function (document)
        {
            if (document.postHeading == PARAMETER_PASSED_GOES_HERE)
                emit(null, document);
        }
    }
});

database.view("posts/single", function (error, documents)
{           
});
4

2 に答える 2

3

ビューをクエリしている場合は、次のように、設定とともにオプション オブジェクトとして 2 番目のパラメーターを渡すようにしてください。

db.view('characters/all', {descending: true}, function (err, res) {
    res.forEach(function (row) {
        sys.puts(row.name + " is on the " +
                 row.force + " side of the force.");
    });
});

これにも注意してください:

一部のクエリ文字列パラメーターの値は、JSON エンコードする必要があります。


編集:

私が知る限り、map/reduce 関数コードで使用されるカスタム パラメーターを渡す CouchDB でビューを作成することはできません。マップ関数からキーを発行する必要があり、それらに基づいて、startkeyやなどのパラメーターを使用してビューをクエリできますendkeyDatabase Queries the CouchDB Way の記事を参照してください。

于 2011-04-07T09:35:22.323 に答える
-2
db.get('vader', function (err, doc) {
    doc.name; // 'Darth Vader'
    assert.equal(doc.force, 'dark');
});

ここで検索された値 (パラメーター) は、すべての強制キーの中で「暗い」ように見えますか?

ID のリストがある場合、Cradle は複数のドキュメントを取得することもできます。配列を渡して取得するだけです。

db.get(['luke', 'vader'], function (err, doc) { ... });

于 2011-04-06T23:39:22.987 に答える