小编ste*_*kim的帖子

是否有一种经济有效的方法来备份 Firebase Firestore?

据我了解,备份 Firestore 数据库会导致读取每个文档。这看起来非常昂贵。

例如,假设我有一个有 1000 个用户的笔记应用程序,每个用户每天创建 100 个文档并阅读 100 个文档。每月的费用为:

reads = 1000 * 100 * 30 * 0.036/100000 = $1.08 per month
writes = 1000 * 100 * 30 * 0.108/100000 = $3.24 per month 
Run Code Online (Sandbox Code Playgroud)

这看起来非常合理,甚至很便宜。

但假设我想创建每日备份,以确保客户在发生某种故障时不会丢失笔记。

使用 1 年后,每月每日备份的费用将为:

reads = 1000 * 100 * 365 * 30 * 0.036/100000 = $394.20 per month
Run Code Online (Sandbox Code Playgroud)

而且随着时间的推移,它只会变得越来越贵!

有人对如何处理这个问题有什么建议吗?我知道实时数据库的备份只需要存储成本,但我认为对于这种类型的应用程序,除了备份成本之外,Firestore 在所有方面都更好。

firebase google-cloud-firestore

11
推荐指数
2
解决办法
2044
查看次数

Redux Toolkit:我可以将 createAsycThunk 与 Firebase 侦听器函数(例如 firestore.collection.onSnapshot)一起使用吗

有没有办法将createAsyncThunk与 Firebase 侦听器一起使用,例如firestore.collection.onSnapshot

它可能不起作用,因为 onSnapshot 的工作方式(它是一个侦听器,每次 firestore 更新时都会接收数据并触发回调,并返回一个取消订阅侦听器的函数)。我尝试实现 createAsyncThunk 但无法弄清楚。

这是我当前的 thunk 实现,它确实有效:

const listenerUnsubscribeList = [];
export function fetchProjects() {
  return dispatch => {
    dispatch(fetchProjectsPending());
    const unsubscribe = firestore
      .collection('projects')
      .onSnapshot(
        snapshot => { dispatch(fetchProjectsFulfilled(snapshot.docs.map(doc => ({ id: doc.id, ...doc.data() })))) },
        error => { dispatch(fetchProjectsError(error)) },
      );
    listenerUnsubscribeList.push(unsubscribe);
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我对 createAsyncThunk 的尝试,但不起作用。我得到了database/fetchProjects/pendingdatabase/fetchProjects/fulfilled但有效负载是undefined

const listenerUnsubscribeList = [];
export const fetchProjects = createAsyncThunk(
  'database/fetchProjects',
  async (_, thunkAPI) => {
    const …
Run Code Online (Sandbox Code Playgroud)

firebase redux google-cloud-firestore redux-toolkit

6
推荐指数
1
解决办法
2436
查看次数