为什么在子集合中创建多个文档后,我收到 Cloud Function 内存泄漏警告?

sar*_*rah 6 node.js firebase google-cloud-functions google-cloud-firestore

所以我使用:

  1. 节点 14
  2. firebase-admin 9.5.0
  3. 火力基地功能 3.13.2
  4. 火力基地工具 9.8.0

所以我仍然使用Firestore 和 Cloud Function 模拟器,尚未部署在实际生产服务器中。

每当我关闭服务器时,Firestore 模拟器中的所有文档都会被删除,对吧。

所以我创建了一个脚本来填充 firestore 模拟器。我使用云函数 http 触发器,因此在我点击该端点后,Firestore 模拟器将填充我需要的文档。我像这样创建http触发器

export const populateFirestoreData = functions
.https.onRequest(async (req, res) => {

    // I create 5 dummy user documents
    creatingDummyUsers()

    // then create 8 dummy event documents in attendedEvents sub-collection
    creatingDummyAttendedEvents()

})

function creatingDummyUsers() {

    const dummyUsers = []; // 5 data here

    const promises = dummyUsers.map( (dummyUser) => db.doc(`users/${dummyUser.uid}`).set(dummyUser);
    await Promise.all(promises)

}

function creatingDummyAttendedEvents() {

    const dummyEvents = []; // 8 data here

    const promises = dummyEvents.map( (dummyEvent) => db.doc(`users/${dummyEvent.userID}/attendedEvents/${dummyEvent.id}`).set(dummyEvent);
    await Promise.all(promises)

}
Run Code Online (Sandbox Code Playgroud)

在该函数中,我创建了一些用户文档,并且一个用户有一个名为attendentEvents 的子集合。所以我的收藏和文档的结构将是这样的

users/{userID}/attendedEvents/{eventID}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我还有另一个功能(firestore 触发器),所以每当在 attentedEvents 子集合中创建文档时,我都需要做一些事情

exports.onCreate = functions
.region(CLOUD_FUNCTION_DEFAULT_REGION)
.firestore.document("users/{userID}/attendedEvents/{eventID}")
.onCreate(async (snapshot, context) => {

    // I do nothing in here, but still I have this problem

    return null;

});
Run Code Online (Sandbox Code Playgroud)

这是问题....

如果我只是为参加的活动制作 7 个活动文件,那么一切都会好起来的。但是每当我为 attentedEvents 制作 8 个事件文件时,我都会收到此警告

在此处输入图片说明

节点:6340)MaxListenersExceededWarning:检测到可能的 EventEmitter 内存泄漏。11 个日志监听器添加到 [EventEmitter]。使用emitter.setMaxListeners() 增加限制(node --trace-warnings ...用于显示警告的创建位置)

每当我在attendentEvents 子集合中创建 8 个事件文档时都会出错,因为它会触发函数 users_attendedEvents-onCreate

不幸的是,我不知道如何使用 that 来堆栈跟踪警告node --trace-warnings。我是 nodeJS 的新手

我实际上创建了更多的虚拟文档,而不仅仅是用户文档和参与的事件文档,但是每当我创建 8 个参与的事件文档(7 个文档是可以的)时,我都会发现这个警告。

如果我使用批量写入,我也会遇到同样的问题

我达到了一些限制?只能在模拟器中使用吗?这是一个错误吗?