1

我正在使用 Stripe 处理费用和客户订阅,我想将这些处理用作 Hoodie 插件。

付款和客户的注册和订阅正常显示在 Stripe Dashboard 中,但我想做的是在 CouchDB 中更新我的 _users 数据库,以确保客户的信息保存在某处。我想要做的是从我的数据库中更新文档中的stripeCustomerId字段,该数据库在使用 Hoodie 登录时创建。如果可能,如果该字段不存在,则创建该字段。org.couchdb.user:user/bill_users

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

// 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_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功能。

4

1 回答 1

1

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

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

完整的语法是:

hoodie.account.update('user', user.id, changedAttrs, callback)

user.id实际上,Hoodie 注册表单中设置的帐户名称在哪里,而changedAttrs我认为是一个实际的 JS 对象。

感谢 gr2m 的修复;;)

于 2014-09-19T11:17:54.567 回答