我发现其他几篇帖子提出了类似的问题,但它们都有特定的代码元素,并且这个问题更多地涉及 Firebase 和 NOSQL 数据库的流程或最佳实践。一旦我知道我应该采取什么方向,我就能弄清楚代码。
我有一个使用 React 和 Firestore 数据库的简单应用程序。它已部署,目前有 1 个用户……我。但为了这个问题,让我们假设我有 1000 个用户。每个用户都可以创建任意数量的“项目”或“视图”,并在“用户”文档中存储一些数据。
我已经为我的应用程序创建了一个新功能,需要:
由于我是唯一的用户,我可以直接删除 Firestore 并重新开始,但我的其他 999 个虚构用户可能会因为他们的数据已被删除而感到有点恼火,所以......
处理这个问题的正确方法是什么?通过阅读各种帖子,似乎有三种方法,但我不确定哪种是最佳实践。
这是我的首选解决方案,因为它是一次完成的练习,但我不知道这在 Firestore 中如何工作。我不能 100% 确定 Firebase 和 Google Cloud 之间的关系,也不知道如何实际执行此操作。
这看起来很混乱,因为随着应用程序的增长,我再次遇到这个问题,我将永远需要更复杂的代码来处理不同的版本,这会带来更多的错误或其他问题的机会。
或者还有其他我完全错过的事情吗?
请发送帮助。
数据混乱——由于它的 NoSQL 性质,这可能会成为 FB 中的一个问题。您可以利用 FB 规则来确保您的数据始终以您期望的正确格式写入。 (尽管我们欢迎原生模式支持)
当您想要进行更改时:
import admin from "firebase-admin";
// TODO in project settings > Service accounts > Generate new private key
import serviceAccount from "./path/to/serviceAccountKey.json";
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
// TODO change to your DB url
databaseURL: "https://xxxx.firebaseio.com",
});
const migrate = async () => {
const docs = await admin.firestore().collection("workspaces").listDocuments();
console.log("Going to process number of WS:", docs.length);
...
console.log("Successfully processed number of users:", counter);
}
};
migrate().then(() => console.log("Migration done"));
我建议在不同状态的应用程序中进行计数。我们有时会这样做,但我们会尽力避免它,并通过规则、迁移和打字稿确保正确的状态。
Firebase 控制台不是操作数据的基本方式。我们一直在使用这两个工具: