javascript - 事务中的 Firebase 函数 admin.database() 空参数
问题描述
我正在使用带有“Spark 计划”(免费)的 Firebase 功能。这是我的功能的一部分:
return query.once("value").then(function(snapshot) {
snapshot.forEach(function(childSnapshot) {
var childData = childSnapshot.val();
if (childData.displayName === ally) {
existAlly = true;
console.log('uid: '+uid)
var ref = admin.database().ref('users/'+uid).transaction(function (current_value) {
console.log('current_value: '+uid)
current_value.mainAlly = ally;
current_value.coins = (current_value.coins || 0) + 10
return current_value;
}).then(() => {
console.log('New Ally added');
return true;
});
...
这里的日志,你可以看到“'current_value: null'
但是,你可以在下一张图片中看到,“ref”是正确的:
那么,是计费问题吗?一段时间后“admin.database()”停止工作?或者是别的什么?
谢谢!
编辑:我刚刚做了另一个测试,现在错误出现在“硬币”中,代码相同:
解决方案
一切都按预期工作。处理事务时,您可以预期您的处理函数将在第一次被调用时使用 null(您必须检查它),然后再次使用数据库的实际内容。您应该查看文档,并特别注意以下说明:
事务函数被多次调用
您的事务处理程序被多次调用,并且必须能够处理空数据。即使您的数据库中存在现有数据,在运行事务功能时也可能不会在本地缓存。
推荐阅读
- python - 在 Windows 上使用 CUDA 的 OpenCV Python:DLL 加载失败
- r - 两组差异,数据处理
- c# - 在模态而不是重定向 C# MVC Ajax 中返回错误
- flutter - 使用 Navigator.push() 时的“无限循环”
- python - 从Arduino获取数据的问题它输出结束行字符Python
- powerbi - 条件格式矩阵中的总计 - Power bi
- laravel - 如何在 Cpanel 的子域 lumen/laravel 上安装免费 SSL?
- r - 在 R 中实现 BFS 算法的问题
- laravel - 雄辩的删除列
- ios - 从 iOS 和 GoogleDrive/iCloud 上传文件后的 inode/x-empty 内容类型