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

如果您正在查询视图,请尝试将第二个参数作为选项对象与您的设置一起传递,例如:

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 函数代码中使用的自定义参数。您必须从 map 函数中发出键,并根据它们使用 和 之类的参数查询startkey视图endkey。尝试查看Database 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 回答