gpt4 book ai didi

java - 如何使用Java程序将数据写入firebase

转载 作者:行者123 更新时间:2023-11-30 06:05:20 25 4
gpt4 key购买 nike

我正在尝试将数据写入现有 Firebase 数据库,但未写入任何数据。

是否有一个示例 Java 程序可以将数据写入 Firebase 数据库中的某处,供我使用?

到目前为止我所做的如下:

package org.nilostep.bota.dcp.export;

import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseOptions;
import com.google.firebase.auth.FirebaseCredentials;
import com.google.firebase.database.*;

import java.io.FileInputStream;
import java.util.HashMap;
import java.util.Map;

public class ReadWriteFirebase {

private static final String DATABASE_URL = " (the url of my database) ";


public static void main(String[] args) throws Exception {
FileInputStream serviceAccount =
new FileInputStream("bota-6e0b33e3f1fe.json");

FirebaseOptions options = new FirebaseOptions.Builder().setCredential(FirebaseCredentials.fromCertificate(serviceAccount)).setDatabaseUrl("https://bota-313fb.firebaseio.com").build();

FirebaseApp.initializeApp(options);

DatabaseReference db = FirebaseDatabase.getInstance().getReference().child("testdata");

Map<String, String> users = new HashMap<>();
users.put("A", "Jaap");
System.out.println(users);
db.setValue(users);

System.out.println(db);
}

}

“testdata”是数据库根目录下的现有子项。

程序的第二个版本

public static void main(String[] args) throws Exception {

FileInputStream serviceAccount =
new FileInputStream("bota-6e0b33e3f1fe.json");

FirebaseOptions options = new FirebaseOptions.Builder()
.setCredential(FirebaseCredentials.fromCertificate(serviceAccount))
.setDatabaseUrl(DATABASE_URL)
.build();

FirebaseApp.initializeApp(options);

FirebaseDatabase db = FirebaseDatabase.getInstance(DATABASE_URL);
DatabaseReference ref = db.getReference().child("testdata");
ref.setValueAsync("I'm writing data", new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
if (databaseError != null) {
System.out.println("Data could not be saved " + databaseError.getMessage());
} else {
System.out.println("Data saved successfully.");
}
}
});

它停止并显示以下消息:

Exception in thread "main" com.google.firebase.database.DatabaseException: Failed to parse node with class class org.nilostep.bota.dcp.export.ReadWriteFirebase$1
at com.google.firebase.database.snapshot.NodeUtilities.NodeFromJSON(NodeUtilities.java:108)
at com.google.firebase.database.snapshot.NodeUtilities.NodeFromJSON(NodeUtilities.java:33)
at com.google.firebase.database.snapshot.PriorityUtilities.parsePriority(PriorityUtilities.java:38)
at com.google.firebase.database.DatabaseReference.setValue(DatabaseReference.java:241)
at com.google.firebase.database.DatabaseReference.setValueAsync(DatabaseReference.java:218)
at org.nilostep.bota.dcp.export.ReadWriteFirebase.main(ReadWriteFirebase.java:44)

最佳答案

注意

CountDownLatch,
latch.countdown(),
latch.await()

没有记录。

以下类(class)有效。

import com.google.auth.oauth2.GoogleCredentials;
import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseOptions;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

import java.io.IOException;
import java.io.InputStream;
import java.util.concurrent.CountDownLatch;

public class Firebase {

private static final String DATABASE_URL = "YOUR_DB_URL";
private FirebaseDatabase firebaseDatabase;

public Firebase() {
InputStream serviceAccount = this.getClass().getResourceAsStream("/bota-6e0b33e3f1fe.json");

try {
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(serviceAccount))
.setDatabaseUrl(DATABASE_URL)
.build();
FirebaseApp.initializeApp(options);
firebaseDatabase = FirebaseDatabase.getInstance(DATABASE_URL);

} catch (IOException ioe) {
System.out.println(ioe.getMessage());
}
}

public void update(Object value) {
update(value, "testdata");
}

public void update(Object value, String key) {
try {
DatabaseReference ref = firebaseDatabase.getReference(key);
final CountDownLatch latch = new CountDownLatch(1);
ref.setValue(value, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
if (databaseError != null) {
System.out.println("Data could not be saved " + databaseError.getMessage());
latch.countDown();
} else {
System.out.println("Data saved successfully.");
latch.countDown();
}
}
});
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
}

public void close() {
firebaseDatabase.getApp().delete();
}
}

关于java - 如何使用Java程序将数据写入firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46906163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com