【问题标题】:Is it possible to dynamically add views in cloudant (couchdb) through node.js using nano是否可以使用 nano 通过 node.js 在 cloudant (couchdb) 中动态添加视图
【发布时间】:2019-05-23 18:59:31
【问题描述】:

我是第一次使用cloudant-couchdb,但我遇到了这个问题。 我正在尝试通过我的 node.js 服务器将视图动态插入到我的数据库中。

这是我的代码。

app.post("/listSections", function(req, res) {      
  var moduleID = req.body.name;                             
  console.log(moduleID);        
  db.insert(
        { "views":
            { moduleID:     //create view with name = moduleID
                { 
                    "map": function (doc) {
                       //some function
                }
            }
        }, 
        '_design/section', function (error, response) {
                console.log("Success!");        
   });          
});

我想动态创建一个视图,视图名称是变量 moduleID 的值。如何在插入函数中传递该变量?

【问题讨论】:

    标签: node.js express couchdb cloudant couchdb-nano


    【解决方案1】:

    变量名称不能插入到对象字面量定义中。预先创建对象。

    var obj = {};
    obj[moduleID] = {map: function () {}};
    
    db.insert({views: obj},
    

    如果您使用的是 ES6 并且可以使用计算属性名称,则可以这样做:

    db.insert({views: {[moduleID]: {
    

    见:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer

    【讨论】:

    • 你是绝对正确的。太感谢了。但是,我只能用它添加一个视图。它不会在多个发布请求上添加新视图(具有不同的模块 ID)。
    • 此代码有效,但仅适用于第一个视图。它不会在名字之后添加视图 - “错误:文档更新冲突”。
    • @KashifKai 视图必须具有唯一的名称。如果你想创建另一个视图,它需要一个不同的名字(或者你必须删除原来的视图)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多