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

时间:2015-06-25 14:03:02

标签: node.js express couchdb cloudant

我第一次使用nosql数据库(cloudant-couchdb),到目前为止一直很好。但我坚持这两个问题:

  1. 我正在尝试动态添加视图。我可以添加第一个视图,但是在尝试插入更多显示Document update conflict的视图时出错。因为我每次都插入一个新视图而不是更新它,所以它会是一个“更新”?

  2. 是否可以在map函数中传递参数?像 - if(doc.name == someVariable)

  3. 之类的东西

    以下是我的代码:

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

1 个答案:

答案 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