Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如果单个集合的写入操作速率超过1000次/秒,会发生什么情况?_Node.js_Firebase_Google Cloud Firestore_Google Cloud Functions_Firebase Admin - Fatal编程技术网

Node.js 如果单个集合的写入操作速率超过1000次/秒,会发生什么情况?

Node.js 如果单个集合的写入操作速率超过1000次/秒,会发生什么情况?,node.js,firebase,google-cloud-firestore,google-cloud-functions,firebase-admin,Node.js,Firebase,Google Cloud Firestore,Google Cloud Functions,Firebase Admin,目前,我想建立一个通知系统,我有一个名为notifications的根集合,在每个通知文档中我将有receivers子集合 我将在我的callable cloud函数中使用如下批处理操作在receivers子集合中编写一些用户标识 let batch = db.batch() querySnapshot.docs.forEach( snapshot => { const data = snapshot.data() const userI

目前,我想建立一个通知系统,我有一个名为
notifications
的根集合,在每个通知文档中我将有
receivers
子集合

我将在我的callable cloud函数中使用如下批处理操作在
receivers
子集合中编写一些用户标识

    let batch = db.batch()

    querySnapshot.docs.forEach( snapshot => {

        const data = snapshot.data()
        const userID = data.userID

        let notificationReceiverRef = db.doc(`notifications/${notificationID}/receivers/${ID}`)
        batch.set(notificationReceiverRef, {
            userID: userID,
            createdAt: now
        })


    })


    await batch.commit()
但我刚刚阅读了firestore中的一些限制,据说我应该将单个集合的写入操作速率保持在1000次操作/秒以下

在我的应用程序中,我可能会在
receivers
子集合中写入大约10.000-50.000个文档,以保留接收通知的记录

但我不知道,如果使用像我上面写的代码那样的批处理操作,我是否会超过1000次操作/秒。云计算功能会自动管理这一点吗?如果没有,如果我超过这个限制会发生什么


我不知道如何保存大量记录,但也要遵守限制。

如果超过任何写入限制,写入将失败。您应该检查错误,如果出现错误,请重试


您必须仔细考虑如何实际重试。几乎可以肯定的是,它不会按照您想要的方式自动为您管理。您可以将云函数配置为启用重试,但这仅适用于由事件驱动的后台函数,它将重试整个事件。HTTP触发器没有重试配置-必须从客户端重试这些触发器。

如果我将
用户
作为根集合,则在其拥有的每个用户文档的
收件箱
子集合中,如果我将10.000个文档写入10.000个不同的用户
收件箱
子集合中。我是否会达到每秒1000次写入操作的限制,因为它位于同一个根
用户
集合中?否,子集合与父集合不相关,仅按路径名相关。每个都有各自不同的索引。