javascript - 如何使用 Javascript 从 Cloud Function 更新实时数据库?
问题描述
我正在为我的 iOS 应用程序创建一个云功能 - 我希望它在用户注册时创建一个 Stripe 客户(这可以正常工作),但我无法在该功能内将任何数据设置到我的实时数据库中。
这是我最近的尝试
const functions = require('firebase-functions')
const admin = require('firebase-admin')
admin.initializeApp(functions.config().firebase);
const stripe = require('stripe')(functions.config().stripe.testkey)
//when user is created:
//1.create user with Stripe
//2.update users/user.uid/registeredStripe: "no" value to "yes"
exports.createStripeCustomer = functions.auth.user().onCreate((user) => {
return stripe.customers.create({
email: user.email
}).then((customer) => {
return admin.database().collection('users').doc(user.uid).set({registeredStripe: "yes"});
});
});
Stripe 客户创建成功~但我的实时数据库根本没有更新。我试过用很多不同的方式重写这条线,但没有任何效果。
编辑:我正在尝试更新我的实时数据库,但没有进行更新(尝试将值从“否”更改为“是”。我在日志中没有收到任何错误,但没有进行更新。
解决方案
我建议仔细检查 Firebase 控制台中的函数日志中是否确实存在错误。 我根本不希望这段代码起作用:
return admin.database().collection('users').doc(user.uid).set({registeredStripe: "yes"});
admin.database()
适用于实时数据库,但“收集”和“文档”是 Firestore 方法。此代码应生成一个错误,指出“集合”不是一种方法。 Firestore 和实时数据库是完全不同的数据库,具有不同的 API。
如果你想更新实时数据库,你应该使用它自己的 API。您将使用诸如“child”之类的方法来指示要更改的数据库中的位置。请参阅文档。
推荐阅读
- android - 日期错误的三星 SM A550W HTTPS ExtCertPathValidatorException
- r - 如何遍历关键字向量列表并将它们模糊匹配到不同的文件(R)
- unit-testing - frameowrk7-vue 单元测试
- apache-spark - java.lang.AbstractMethodError, org.apache.spark.internal.Logging$class.initializeLogIfNecessary
- performance - Uint8Array 在 Chrome 上太慢了
- google-analytics-api - 报告数据未显示在嵌入式 API 中
- python - 转换字符串的某些部分
- java - 循环一个数学公式,直到两个值相等
- node.js - 使用 facebook webhook 发出 HTTP 请求
- html - CSS 图像不显示(Google AppScript)