【问题标题】:How to create a couchdb update handler through cradle?如何通过 cradle 创建一个 couchdb 更新处理程序?
【发布时间】:2015-03-03 17:47:38
【问题描述】:

我对 CouchDB 比较陌生,并且正在使用 cradle 在 node.js 中与它进行交互。我试图在文档中包含一个“计数”字段,并创建一个更新处理程序来增加它,所以我不必先执行 GET 再执行 PUT。 目前,我在创建 db 对象后立即定义它:

db.save('_design/main', {
    updates: {//Not sure I'm doing this right. Documentation isn't clear to me
        updateCount:
            function (doc) {
                if (!doc.count) {
                    doc.count = 0;
                }
                doc.rowImportCount++;
                return [doc, JSON.stringify(doc.count)];
            }
    },
    findByFileUuid: {
        map: function (doc) {
            ...view stuff, works perfectly fine...
        },
        reduce: '_sum'
    }
}

稍后在程序中,当我尝试更新计数时,我会这样做:

db.update('main/updates/updateCount',fileUuid,{},function(res){
            console.log(res.message);
        });

但它不起作用。 res.message 说“点未定义”。

我看不到我做错了什么,couchdb 或 cradle 的文档都不是很有帮助。请注意,如果没有我的计数更新尝试,一切正常。

谢谢!

【问题讨论】:

  • 我不确定 cradle,但更新部分看起来不错,如果更新 cmd 执行 put,那么您的 url 将是 '_design/main/_update/updateCount/' ex @ 987654323@
  • 哦,好的。我会看看。我最终决定在程序中进行进度跟踪,然后每隔 x% 更新 couchdb 中的一个变量,绕过这个问题。不过还是谢谢!

标签: couchdb cradle


【解决方案1】:

这种方法对我有用:

db.update('main/updateCount', fileUuid, { rev: doc._rev }, function(res){
    console.log(res.message);
});

db.update('main/updateCount', fileUuid, { }, function(res){
    console.log(res.message);
});

【讨论】:

  • 好的,感谢您的帮助!我最终做了一些不需要柜台的事情,但如果我需要它,我一定会看看!
猜你喜欢
  • 1970-01-01
  • 2018-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-01
  • 1970-01-01
相关资源
最近更新 更多