我正在从Firebase实时数据库迁移到Cloud Firestore。以前,我会在实时数据库下.push()
,我会得到.push()
的密钥如下:
final String key = mBaseRef.child("ABC").push().getKey();
在新的Cloud Firestore下,此方法似乎不可用。我正在这样做:
mStoreBaseRef.collection("ABC").add(pollMap).addOnCompleteListener(new OnCompleteListener<DocumentReference>() {
@Override
public void onComplete(@NonNull Task<DocumentReference> task) {
String key = String.valueOf(mStoreBaseRef.collection("ABC").document().getId());
Log.v("KEY", key);
Toast.makeText(getApplicationContext(),key,Toast.LENGTH_LONG).show();
}
}
日志根本没有返回创建的密钥。
答案 0 :(得分:2)
作为完成任务的结果,将返回对添加的文档的引用。文档ID可从中获取:
mStoreBaseRef.collection("ABC").add(pollMap)
.addOnCompleteListener(new OnCompleteListener<DocumentReference>() {
@Override
public void onComplete(@NonNull Task<DocumentReference> task) {
if (task.isSuccessful()) {
DocumentReference docRef = task.getResult();
String key = docRef.getId();
Log.v("KEY", key);
Toast.makeText(getApplicationContext(), key, Toast.LENGTH_LONG).show();
}
}
});
答案 1 :(得分:2)
您可以替换
final String key = mBaseRef.child("ABC").push().getKey();
与
DocumentReference key = db.collection("ABC").document();
这将返回自动生成的ID。 然后,您可以在以下时间引用它:
key.set(data);
或者您可以将Firebase推送ID设为:
key.getId();
答案 2 :(得分:0)
您首先可以通过此代码获取 ID
Access to fetch at 'https://dev.xxx.xxx/contactform/' from origin 'https://cdpn.io' has been blocked by CORS policy: Request header field cache-control is not allowed by Access-Control-Allow-Headers in preflight response.
以及您要为此文档设置值
db = FirebaseFirestore.getInstance();
String documentId=db.collection("MyCollection").document().getId();