我有一个侦听器用于修复DB更改,每次发生更改,它都会自动获取,但是,如果我决定在云函数中实现它并从客户端应用程序调用它,它会花费更高的成本吗?即使用户不使用该应用程序,它也会运行24小时/7小时吗?
这是在客户端:
firestore()
.collection('Collection').doc().collection('public')
.where('act', '==', 1)
.orderBy('time', 'asc')
.limit(10)
.onSnapshot({
error: (e) => this.setState({ errorMessage: e, loading: false }),
next: (querySnapshot) => { this._calculateLocationDistance(querySnapshot) },
});此外,是否有必要在云功能中这样做呢?如果我把它放在客户端会有风险吗?
发布于 2020-04-19 19:54:08
在云函数中,不能真正有效地使用侦听器。云函数应该是无状态的。他们一次只提供一个请求,然后再清理。如果你试图使用一个侦听器,它就不会像你所期望的那样工作。云函数也不向请求者开放套接字。一旦发送了响应,连接就会关闭,因此无法保持其打开。
考虑到这些约束,函数通常只使用get()一次获取数据,并将结果返回给客户端。如果您想要实时结果,则应该在客户端上实现。
如果您使用的后端可以使套接字连接对客户端保持打开,那么在后端向客户端提供结果的侦听器也同样昂贵。在侦听器继续接收结果时,仍要为侦听器读取的每个文档收取文档读取费。
https://stackoverflow.com/questions/61310444
复制相似问题