android 中的数据未保存在 Firebase 数据库中
Data not getting saved in Firebase database from android
我正在使用新的 Firebase 控制台。我正在尝试将一个对象保存到数据库,但它没有被保存。以下是代码。
DatabaseReference mFirebaseRef = FirebaseDatabase.getInstance().getReference();
mFirebaseRef.push().setValue(object, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference reference) {
if (databaseError != null) {
Log.e(TAG, "Failed to write message", databaseError.toException());
}
}
});
'object' 已正确创建。我没有收到任何错误,并且我在调试时检查过没有触发 onComplete 方法。
安全规则也适用于写入。
请注意 DatabaseReference.CompletionListener 触发 "when an operation has been acknowledged by the Database servers"。您 运行 测试时是否可能没有网络连接?我复制了你的代码,运行 它在 phone 上成功复制,object
定义如下:
Object object = new String("Test");
然后我启用了飞行模式,重新运行代码并观察了您描述的行为。在我禁用飞行模式并建立网络连接之前,完成侦听器不会触发。
this documentation 中提供了检查网络连接状态的示例代码。
使用下面的代码:
mFirebaseRef.push().setValue(object).addOnCompleteListener(new OnCompleteListener<Void>()
{
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
// write code for successfull operation
}
}
});
}
.push 将生成一个随机密钥,如果您不使用 .push 它将存储您的数据,它将覆盖以前存储的数据。
我正在使用新的 Firebase 控制台。我正在尝试将一个对象保存到数据库,但它没有被保存。以下是代码。
DatabaseReference mFirebaseRef = FirebaseDatabase.getInstance().getReference();
mFirebaseRef.push().setValue(object, new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError, DatabaseReference reference) {
if (databaseError != null) {
Log.e(TAG, "Failed to write message", databaseError.toException());
}
}
});
'object' 已正确创建。我没有收到任何错误,并且我在调试时检查过没有触发 onComplete 方法。 安全规则也适用于写入。
请注意 DatabaseReference.CompletionListener 触发 "when an operation has been acknowledged by the Database servers"。您 运行 测试时是否可能没有网络连接?我复制了你的代码,运行 它在 phone 上成功复制,object
定义如下:
Object object = new String("Test");
然后我启用了飞行模式,重新运行代码并观察了您描述的行为。在我禁用飞行模式并建立网络连接之前,完成侦听器不会触发。
this documentation 中提供了检查网络连接状态的示例代码。
使用下面的代码:
mFirebaseRef.push().setValue(object).addOnCompleteListener(new OnCompleteListener<Void>()
{
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
// write code for successfull operation
}
}
});
}
.push 将生成一个随机密钥,如果您不使用 .push 它将存储您的数据,它将覆盖以前存储的数据。