java - Firebase admin sdk setValue 和 setValueAsync 从未完成
问题描述
我正在尝试使用 firebase admin sdk 写入我的实时数据库。我在用。但由于某种原因,请求没有执行。我正在使用斯卡拉。但我也觉得它与 java 相关,因为我刚刚将 java 代码转换为 scala。
<dependency>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-admin</artifactId>
<version>7.3.0</version>
</dependency>
我已经正确设置GOOGLE_APPLICATION_CREDENTIALS
并且 auth 部分可以正常工作。我也将数据库的规则设置为,
{
"rules": {
".read": true,
".write": true
}
}
代码 :
def updateFireBase(updated: WxResponseString, symbol: String): Future[Unit] ={
println("start")
try{
val options = FirebaseOptions.builder.setCredentials(GoogleCredentials.getApplicationDefault)
.setDatabaseUrl("https://xxxxxxxxxx.firebaseio.com/").build
val app: FirebaseApp =FirebaseApp.initializeApp(options)
println(app.getOptions.getDatabaseUrl)
val ref = FirebaseDatabase.getInstance.getReference
val symbolRef = ref.child("ticker/" + symbol.toLowerCase())
println(symbolRef.toString)
return Future{
println("this is start")
symbolRef.setValueAsync(updated.last).get() // gets stuck here forever
println("this is end !!!!!!!!!!!!!")
}
} catch {
case e:Exception => {
logger.error("err", e)
}
}
Future.successful()
}
println("this is start")
被执行但println("this is end !!!!!!!!!!!!!")
不是。我检查了 db url 是否正确,并通过调用 get 来确保线程被阻塞。我经历了JavaEE 和 Firebase admin sdk - setValueAsync not push data to realtime firebase和其他问题,但没有帮助。我也尝试了相同的代码,setValue
并且它的回调永远不会被调用。
解决方案
你可以这样尝试吗:
def updateFireBase(updated: WxResponseString, symbol: String): Future[Unit] ={
println("start")
try{
val options = FirebaseOptions.builder.setCredentials(GoogleCredentials.getApplicationDefault)
.setDatabaseUrl("https://xxxxxxxxxx.firebaseio.com/").build
val app: FirebaseApp =FirebaseApp.initializeApp(options)
println(app.getOptions.getDatabaseUrl)
val ref = FirebaseDatabase.getInstance.getReference
val symbolRef = ref.child("ticker/" + symbol.toLowerCase())
println(symbolRef.toString)
ApiFuture<Void> future = symbolRef.setValueAsync(updated.last);
future.get();
} catch {
case e:Exception => {
logger.error("err", e)
}
}
Future.successful()
}
推荐阅读
- node.js - 无法使用护照 nodejs 在 docker google vm instace 中验证 facebook 应用程序
- protractor - 如何在量角器中的单个描述中使用多个数据提供者
- ios - SQLite从JSON对象ios插入多行
- excel - 如果满足条件,则复制和粘贴数据
- amazon-web-services - AWS 在使用 SDK 时承担角色访问被拒绝
- python-3.x - 将上下文菜单添加到特定的 Qtablewdiget 表列,Python
- python - 蛇动画
- wso2 - WSO2 ESB/EI:如何将原始 JSON 正文转换为 XML 有效负载
- javascript - 如何从服务器的子文件夹中使用 socket.io?
- javascript - 如何在 Typescript 和 React.js 中使用随机字段解析 JSON