如何使用底座(CouchDB)将参数传递给视图

时间:2011-04-06 22:24:07

标签: node.js couchdb cradle

使用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)
{           
});

2 个答案:

答案 0 :(得分: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函数代码中使用的自定义参数。您必须从地图功能发出密钥,并根据它们,您可以使用startkeyendkey等参数查询视图。试着查看Database Queries the CouchDB Way文章。

答案 1 :(得分:-2)

db.get('vader', function (err, doc) {
    doc.name; // 'Darth Vader'
    assert.equal(doc.force, 'dark');
});

看起来这里的搜索值(参数)是所有强制键中的“暗”吗?

  

Cradle也可以获取多个   如果你有一个id列表,   只需传递一个数组即可:

     

db.get(['luke','vader'],函数   (错误,doc){...});