使用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)
{
});
如果您正在查询视图,请尝试将第二个参数作为选项对象与您的设置一起传递,例如:
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编码。
编辑:
据我所知,你不能在CouchDB中创建一个视图,在那里你可以传递你的自定义参数,这个参数将在map/reduce函数代码中使用。您必须从映射函数中发出键,并基于这些键可以使用参数(如startkey
和endkey
(查询视图。试着看看数据库查询CouchDB方式的文章。
db.get('vader', function (err, doc) {
doc.name; // 'Darth Vader'
assert.equal(doc.force, 'dark');
});
看起来这里搜索的值(参数(在所有强制键中都是"暗"的?
摇篮还可以获得多个文档如果你有一个id列表,只需传递一个数组即可获得:
db.get(['luke','vader'],函数(呃,doc({…}(;