gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:02:27 24 4
gpt4 key购买 nike

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

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

在 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 函数。

最佳答案

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

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

完整的语法是:

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

其中 user.id 实际上是 Hoodie 注册表中设置的帐户名称,而 changedAttrs 正如我所想的那样是一个实际的 JS 对象。

感谢 gr2m 的修复; ;)

关于node.js - Hoodie - 更新 CouchDB 文档 (Node.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25930418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com