javascript - 执行两个创建函数云函数
问题描述
我正在为用户注册时创建一个云功能,首先从他们创建一个分数集合,但随后我还想向他们的帐户添加一些虚拟启动数据,但以下内容不起作用,因为第二个返回语句是从未达到。
如果对完全做到这一点的更好方法有任何建议,那么我欢迎您提供反馈。
// auth trigger (new user signup)
exports.newUserSignup = functions.auth.user().onCreate((user) => {
return admin.firestore().collection('users').doc(user.uid).collection('score').add({
gems: 0,
})
//this line isn't reached
return admin.firestore().collection('users').doc(user.uid).collection('sampleData').add({
...
});
})
解决方案
您需要等到两个操作的承诺得到解决。一种方法是生成一个新的 Promise,该 Promise 仅在其他两个解决后才解决。
exports.newUserSignup = functions.auth.user().onCreate((user) => {
const p1 = admin.firestore().collection('users').doc(user.uid).collection('score').add({
gems: 0,
})
const p2 = admin.firestore().collection('users').doc(user.uid).collection('sampleData').add({
...
});
return Promise.all([p1, p2]);
})
为了有效地使用 JavaScript 和 Cloud Functions,您肯定需要了解使用 JavaScript Promise 进行异步编程的工作原理。我建议花一些时间来了解这一点。
推荐阅读
- php - WP_Query 中的 Meta_Query 数组使用高级自定义字段(动态用于多个过滤器字段)wordpress - php
- html - 自定义元素:主机边框
- python - 将列中的值附加到包含列表的另一列的开头
- c# - C# 我在玩骰子游戏时遇到问题,每次用户玩游戏时我都需要增加一个值,然后将其打印回给他们
- python - 如何将 Python 列表导出到 MS Word?
- php - 使用空值格式化 php echo
- kubernetes-ingress - 在 Rancher 上访问 Kubernetes 节点时使用哪个 URL/IP?
- raspberry-pi - Webmin 在浏览器上不显示任何内容
- arrays - 使用列表中的 for 循环有什么问题?
- postgresql - 从 Get Response API 获取详细信息