【发布时间】:2021-06-06 00:59:49
【问题描述】:
我正在尝试使用 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 and Firebase admin sdk - setValueAsync not pushing data to realtime firebase 和其他问题,但没有帮助。
我也用setValue 尝试了相同的代码,它的回调从未被调用。
【问题讨论】:
标签: java firebase scala playframework firebase-admin