我可以在Firestore中更改文档的名称吗?

时间:2017-12-19 11:23:55

标签: swift google-cloud-firestore

我目前正在开发一款应用程序,我必须从Google的Firestore中检索数据。

我的数据结构如下:

users
 - name@xxx.com
    - more data

我有办法将name@xxx.com更改为名称吗? 我无法看到更改文档名称的方法。

2 个答案:

答案 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();
                    }
                });
    }
});