NodeJS 如何在v2 onDocumentWritten云函数中使用getCountFromServer?

hwamh0ep  于 2023-05-17  发布在  Node.js
关注(0)|答案(1)|浏览(90)

我试图写一个服务器端的v2云函数(触发器),其中有这个头...
exports.userUpdatedTrigger = onDocumentWritten(“users/{userId}",async(event)=> {
作为这个函数的一部分,我想使用新的getCountFromServer函数,它可以计数,但不需要读取所有文档。

const countQuery = query(
        collection(db, "users"),
        where("account_id", "==", accountId),
    )
    const result = await getCountFromServer(countQuery)

问题是,虽然我可以部署它,但当我更新用户记录(这会触发onDocumentWritten)时,在云控制台中显示了一个错误。
错误是:

TypeError: collection is not a function

我使用的import是:

const {
    FieldValue,
    getFirestore,
    getCountFromServer,
    query,
    collection,
    where,
} = require("firebase-admin/firestore")

我在firebase文档中找不到包含'query'、'collection'和'where'函数的包。
有没有人能把这两件事结合起来,onDocumentWritten + getCountFromServer?
或者,有人能够让getCountFromServer在云函数中工作吗?我可以让它在客户端工作,但不是服务器端。在尝试添加getCountFromServer之前,我确实设法以简单的形式获得了onDocumentWritten
见上文。
我希望能够在云函数中使用getCountFromServer。我可以使用v9 API方法使其在客户端工作,但不能使其在服务器端工作。

iyfamqjs

iyfamqjs1#

在服务器端代码中,该函数被称为count(),而不是getCountFromServer()

const query = db
    .collection("users")
    .where("account_id", "==", accountId)
  

const snapshot = await query.count().get()
console.log("count", { count: snapshot.data().count })

相关问题