Hoodie-更新CouchDB文档(Node.js)

Hoodie-更新CouchDB文档(Node.js),node.js,couchdb,stripe-payments,hoodie,Node.js,Couchdb,Stripe Payments,Hoodie,我用Stripe处理收费和客户订阅,我想把这些手柄作为连帽衫插件使用 付款和客户的注册和订阅通常出现在Stripe Dashboard中,但我想做的是更新CouchDB中的my_users数据库,以确保客户信息保存在某个地方。 我想做的是更新org.couchdb.user:user/bill文档中的stripeCustomerId字段,该字段来自我的\u用户数据库,该数据库在使用Hoodie登录时创建。如果可能,如果不存在,则创建此字段 在hoodie插件的文档中,更新功能对我来说似乎很模糊

我用Stripe处理收费和客户订阅,我想把这些手柄作为连帽衫插件使用

付款和客户的注册和订阅通常出现在Stripe Dashboard中,但我想做的是更新CouchDB中的my_users数据库,以确保客户信息保存在某个地方。 我想做的是更新
org.couchdb.user:user/bill
文档中的
stripeCustomerId
字段,该字段来自我的
\u用户
数据库,该数据库在使用Hoodie登录时创建。如果可能,如果不存在,则创建此字段

在hoodie插件的文档中,更新功能对我来说似乎很模糊

// update a document in db
db.update(type, id, changed_attrs, callback)
我假设
type
是CouchDB文档中提到的,或者是我们在添加带有
db.add(type,attrs,callback)
的文档时指定的

id
似乎是couchdb中的文档id。在我的例子中,它是
org.couchdb.user:user/bill
。但我不确定我应该在更新函数中传递的是这个id

我假设
changed\u attrs
是一个Javascript对象,其中包含更新的或新的属性,但这里我还是有疑问

所以我在我的
worker.js中尝试了这个:

function handleCustomersCreate(originDb, task) {
    var customer = {
      card: task.card
    };
    if (task.plan) {
      customer.plan = task.plan;
    }

    stripe.customers.create(customer, function(error, response) {
      var db = hoodie.database(originDb);
      var o = {
        id: 'bill',
        stripeCustomerId: 'updatedId'

      };

      hoodie.database('_users').update('user', 'bill', o, function(error) {
        console.log('Error when updating');
        addPaymentCallback(error, originDb, task);
      });


      db.add('customers.create', {
        id: task.id,
        stripeType: 'customers.create',
        response: response,

      }, function(error) {
        addPaymentCallback(error, originDb, task);
      });
    });
  }
在其他消息之间,我得到了以下错误日志:

TypeError: Converting circular structure to JSON
并且我的文件未更新:
stripeCustomerId
字段保持为
null
。 我尝试了
JSON.stringify
我的
o
对象,但它没有改变任何事情


我希望你们中的一些人比我更了解这个
db.update
功能。

最后,我决定加入Hoodie官方IRC频道,他们很快解决了我的问题

实际上user.docs需要一个额外的API,要更新它们,你必须使用
hoodie.account
而不是
hoodie.database(name)

完整语法为:

hoodie.account.update('user', user.id, changedAttrs, callback)
其中,
user.id
实际上是在Hoodie注册表单中设置的帐户名,
changedAttrs
如我所想是一个实际的JS对象

对gr2m的修复表示感谢;;)