我目前正在开发一款应用程序,我必须从Google的Firestore中检索数据。
我的数据结构如下:
users
- name@xxx.com
- more data
我有办法将name@xxx.com更改为名称吗? 我无法看到更改文档名称的方法。
答案 0 :(得分:8)
我认为最好的方法是从'name@xxx.com'获取数据并将其上传到名为'name'的新文档,然后删除旧文档。
仅作为一个例子:
const firestore = firebase.firestore();
// get the data from 'name@xxx.com'
firestore.collection("users").doc("name@xxx.com").get().then(function (doc) {
if (doc && doc.exists) {
var data = doc.data();
// saves the data to 'name'
firestore.collection("users").doc("name").set(data).then({
// deletes the old document
firestore.collection("users").doc("name@xxx.com").delete();
});
}
});
答案 1 :(得分:0)
可能有一种情况,当您意识到您应该为集合中的所有 firebase 文档使用自动生成的 ID,现在您想要更改集合中的文档 ID(“collection_name”)并且还想要存储它们以前的将 ID 作为新文档中的新字段(“prevID”),然后您可以执行以下操作:-
FirebaseFirestore firebaseDb;
ArrayList<Map<String,Object>> data = new ArrayList<>();
firebaseDB.collection("collection_name").get.addOnSuccessListener(
queryDocumentSnapshots -> {
for (DocumentSnapshot d : queryDocumentSnapshots) {
Map<String,Object> map = d.getData();
map.put("prevID", d.getId());
data.add(map);
}
for(Map<String, Object> d : data){
Task<DocumentReference> dd = firebaseDb.collection("collection_name").add(d);
dd.addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
@Override
public void onSuccess(DocumentReference documentReference) {
firebaseDb.collection("collection_name").document((String) d.get("prevID")).delete();
}
});
}
});