【发布时间】:2019-02-14 12:52:00
【问题描述】:
我们可以更改 Cloud Firestore 中集合的名称吗?我创建了一个包含 200 个文档的集合。现在我想更改集合的名称。在 Firebase 控制台中,我找不到执行此操作的方法。
是否可以通过代码或在控制台中更改集合的名称。或者是否可以从 Firestore 导出文档,创建一个新集合,然后再次导入这些文档?
请帮忙。
【问题讨论】:
标签: android firebase google-cloud-firestore
我们可以更改 Cloud Firestore 中集合的名称吗?我创建了一个包含 200 个文档的集合。现在我想更改集合的名称。在 Firebase 控制台中,我找不到执行此操作的方法。
是否可以通过代码或在控制台中更改集合的名称。或者是否可以从 Firestore 导出文档,创建一个新集合,然后再次导入这些文档?
请帮忙。
【问题讨论】:
标签: android firebase google-cloud-firestore
名称或 ID 或集合或文档一旦存在便无法更改。为了构建有效的索引,所有这些数据都是不可变的。
您当然可以把所有内容都读出来,然后用新的名称和 ID 重新输入。
【讨论】:
您可以加载它,然后用新名称重新上传它
await FirebaseFirestore.instance
.collection(oldCollectionName)
.get()
.then((QuerySnapshot snapShot) async {
snapShot.docs.forEach((element) async {
await FirebaseFirestore.instance
.collection(newCollectionName)
.doc(element.id)
.set(element.data());
});
});
注意:以上代码是为 Flutter 编写的,但它可能对任何人稍加改动有所帮助。
【讨论】:
你可以试试Firefoo它允许你更改重命名、复制、导出等,但它不是免费的
【讨论】:
这是一段用 JavaScript 编写的代码。 请注意子集合不会被移动,并且之前的集合不会被销毁。
const db = admin.firestore();
const oldCollRef = db.collection('oldCollectionName');
const oldCollSnap = await oldCollRef.get();
let arrayPromise = [];
oldCollSnap.forEach(async doc => {
arrayPromise.push(new Promise(async (resolve, reject) => {
resolve(await db.collection('newCollectionName').add(doc.data()));
}));
})
Promise.all(arrayPromise)
【讨论】: