我第一次使用nosql数据库(cloudant-couchdb),到目前为止一直很好。但我坚持这两个问题:
我正在尝试动态添加视图。我可以添加第一个视图,但是在尝试插入更多显示Document update conflict
的视图时出错。因为我每次都插入一个新视图而不是更新它,所以它会是一个“更新”?
是否可以在map函数中传递参数?像 - if(doc.name == someVariable)
?
以下是我的代码:
app.put("/listSections", function(req, res) {
var module = req.body.name;
var obj = {};
obj[module] = { "map": function (doc) {
if (doc.name == "Developer") {
//emit something
}
}
});
db.insert({views: obj},
'_design/section', function (error, response) {
if (error) {
console.log("error: " + error);
}
console.log("module: " + module );
}
);
答案 0 :(得分:0)
我的做法错了。我刚发现创建多个视图是一种不好的做法。所以我创建了一个(一般)视图,并将查询作为参数传递,以回答我的第二个问题(如何传递动态参数)。这是我做的:
app.get("/listSections", function(req, res) {
var moduleId = req.query.id;
db.view('section','getSections', { key: moduleId }, function(err, body)
{
//store values
}
}
这里我将moduleId动态传递给我的map函数,该函数将键设置为moduleId。 此外,我发现此链接对于couchdb查询非常有用 - http://sitr.us/2009/06/30/database-queries-the-couchdb-way.html