在 cloudant couchdb 中动态插入视图时出现文档更新错误

Document update error while inserting views dynamically in cloudant couchdb

我是第一次使用 nosql 数据库 (cloudant-couchdb),到目前为止一切顺利。但是我被这两个问题困住了:

  1. 我正在尝试动态添加视图。我可以添加第一个视图,但在尝试插入更多视图时出现错误 Document update conflict。怎么会是 'update' 因为我每次都插入一个新视图而不更新它?

  2. 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 );
    }
);

我的做法是错误的。我刚刚发现创建多个视图是一种不好的做法。所以我创建了一个(通用)视图,并将查询作为参数传递,以回答我的第二个问题(如何传递动态参数)。这是我所做的:

app.get("/listSections", function(req, res) {
    var moduleId = req.query.id;
    db.view('section','getSections', { key: moduleId }, function(err, body)
   {
       //store values
   }
}

在这里,我将 moduleId 动态传递给将键设置为 moduleId 的映射函数。 另外,我发现这个 link 对于 couchdb 查询非常有用 - http://sitr.us/2009/06/30/database-queries-the-couchdb-way.html