问题描述
我正在尝试使用 firebase admin sdk 写入我的实时数据库。 我在用。但由于某种原因,请求没有执行。我正在使用 Scala。但我觉得它也与 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
尝试了相同的代码,但从未调用过它的回调。
解决方法
你能不能这样试试:
library(dplyr)
setdiff(df1,df2)
setdiff(df2,df1)