在 cloudant couchdb 中动态插入视图时出现文档更新错误
Document update error while inserting views dynamically in cloudant couchdb
我是第一次使用 nosql 数据库 (cloudant-couchdb),到目前为止一切顺利。但是我被这两个问题困住了:
我正在尝试动态添加视图。我可以添加第一个视图,但在尝试插入更多视图时出现错误 Document update conflict
。怎么会是 'update' 因为我每次都插入一个新视图而不更新它?
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
我是第一次使用 nosql 数据库 (cloudant-couchdb),到目前为止一切顺利。但是我被这两个问题困住了:
我正在尝试动态添加视图。我可以添加第一个视图,但在尝试插入更多视图时出现错误
Document update conflict
。怎么会是 'update' 因为我每次都插入一个新视图而不更新它?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