有关发生原因的任何建议。
我以下述方式使用了
FirebaseFirestore dbFirestore;
dbFirestore = FirebaseFirestore.getInstance();
在上载时,我以这种方式使用它:
documentReference= dbFirestore.collection("CLIENT_DETAIL").document(mAuth.getUid());
documentReference.set(userData);
我无法在Firestore上编写它,我尝试了许多不同的可能性。
但是,有时在我尝试登录时会写,但在注册时执行代码时却没有。而且在编写时以及那时,即使使用所有字段键进行调用,我也无法读取它。
有什么建议吗?例如为什么会发生这种情况,或者我是否需要在GCP中拥有一个结算帐户。 拜托,任何人。我想过一天。
mDocumentReferance.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
storeType= documentSnapshot.getString("STORE_TYPE");
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.i(TAG, "onFailure: unable to fetch the document");
}
});
它是读取它的代码,但不起作用
这是Task.isSuccessfull上的代码
if (task.isSuccessful()) {
Log.i(TAG, "onComplete: creating folders based type ");
OnAuth(task.getResult().getUser());
sendEmailVerification();
mAuth.signOut();
SharedPreferences storeNamePreference= getSharedPreferences("UserDetails",MODE_PRIVATE);
userData.put(RESTAURANT_UID,storeNamePreference.getString("UserUID",""));
dbFirestore.collection("CLIENT_DETAIL").document(storeNamePreference.getString("UserUID","")).set(userData).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.i(TAG, "onSuccess: Database referance is created");
mDialog.dismiss();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.i(TAG, "onFailure: database referance is not created");
}
});
Intent intent = new Intent(SignupActivity.this, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
由于我已经将User UID值保存在SharedPreferances中,因此我在那儿调用它。 我在上面的代码中做错了吗?
我确实具有“用户UID”的值。
答案 0 :(得分:1)
您无法将数据发送到Firestore,因为您将错误的数据发送到Firestore。您什么也没有发送,仅发送UserUID
字段,没有任何信息:
userData.put(RESTAURANT_UID,storeNamePreference.getString("UserUID",""));
UserUID
-是您要发送到dB的字段。
然后,您输入“”-这是错误的,因为您要发送空白信息,因此必须提供变量。
答案 1 :(得分:0)
在进行连续编码之后,我发现在注册期间无法在“ task.isSuccessfully”内部调用Method。我所做的是,为了在“ mAuth.createUserWithEmailAndPassword()”方法之外获取用户标识,我已经初始化了FirebaseUser并调用了当前用户,并且能够获取用户标识。但是Firebase大约需要2到3秒钟来加载UserID,因此我添加了ProgressBar,该加载栏最终弥补了加载时间,并且我能够在DocumentReference上成功调用UserID参考。
解决了我的问题。
但是,如果我运行null引用,则只能在调试时获取USERID。
答案 2 :(得分:0)
如果要将UserUID设置为Firestore中的文档,请输入:
FirebaseUser currentUser = FirebaseAuth.getInstance()。getCurrentUser();
-此currentUser变量-是授权用户的ID,即他在您应用中的ID。
然后写:
dbFirestore.collection(“ CLIENT_LIST”)。document(currentUser.getUid())
.set(userData).addOnSuccessListener(new OnSuccessListener).......
-在此处将用户ID作为Firestore文档发送。
*它仅在创建mAuth.createUserWithEmailAndPassword方法后才有效,因为这样您的用户将拥有自己的唯一ID。