完成回调未在 firebase 3.0.2 中的 set 方法上执行
Posted
技术标签:
【中文标题】完成回调未在 firebase 3.0.2 中的 set 方法上执行【英文标题】:Completion callback not executing on set method in firebase 3.0.2 【发布时间】:2016-05-19 09:40:05 【问题描述】:在我的 Nodejs 应用程序中,我正在尝试使用如下所示的 firebase 3.0.2 模块将一些数据设置到我的名为“回调”的 firebase 位置。
var firebase = require('firebase');
firebase.initializeApp(
serviceAccount: "path/to/serviceAccountCredentials.json",
databaseURL: "<My firebase url>"
);
var db = firebase.database();
var callbackref = db.ref("callback");
console.log("Before Call");
callbackref.set("Some data", function (error)
console.log("Callback Executed");
);
console.log("After Call");
执行上述代码后,我可以在控制台中看到如下消息
"Before Call"
"After Call"
我可以在我的“回调”位置看到我的 Firebase 控制台中的更新数据,但这里唯一的问题是我从未在我的控制台中收到“回调已执行”消息。
我的 Nodejs 版本是 5.5.0 操作系统是 Windows 10。
我的问题是从未执行过完成回调。我在这里错过了什么?
【问题讨论】:
您好 Ashok,这里没有足够的内容来重现您的错误。请参阅creating an mcve 并包含尽可能多的细节。 @Kato 编辑了我的问题。问题是完成回调从未执行,但我可以在 Firebase 控制台中看到更新的数据。 你在这里的代码对我有用。当然,“回调执行”日志发生在其他两个之后,因为它是异步的。 【参考方案1】:在 3.0.3 中修复了一个错误,该错误会导致您的代码运行,但如果在没有适当权限的情况下提供无效服务帐户,则身份验证会静默失败。尝试升级到版本 3.0.3 并尝试通过firebase.database.enableLogging(true)
打开调试。我感觉您需要通过说明here 重新生成您的服务帐户 JSON 文件。
【讨论】:
我对 firebase 3.14.0 上的update()
方法有同样的问题。【参考方案2】:
使用set
返回的Promise -
var usersRef = ref.child("users"); //ref is my root location
dataRef.set("I'm writing data")
.then(function()
alert("Data saved successfully.");
)
.catch(function(error)
alert("Data could not be saved." + error);
);
【讨论】:
感谢您的回复。它不适用于在 Windows 10 上运行的服务器端 nodejs 应用程序。以上是关于完成回调未在 firebase 3.0.2 中的 set 方法上执行的主要内容,如果未能解决你的问题,请参考以下文章
MonoTouch - UIView.Animate 完成回调未在按钮 touchUpInside 委托内调用
jQuery-File-Upload 未在 Internet Explorer (IE9) 中触发完成回调