如何从云功能访问Cloud Firestore?

Nic*_*ico 7 firebase google-cloud-functions google-cloud-firestore

我正在尝试从我的Cloud Firestore中检索数据以最终在GraphQL服务器中使用,但是现在我只是返回JSON进行测试.我正在使用以下代码访问Firestore,但似乎没有获得任何数据.我知道该功能正常工作,因为"开始测试"和"最终测试推送"在JSON响应中按预期显示.

我也尝试过使用Admin SDK说明,但无济于事.谁能发现我在这里做错了什么?

import * as admin from "firebase-admin"
import * as functions from "firebase-functions"

admin.initializeApp(functions.config().firebase)
const db = admin.firestore()

const authors = [{ key: "start test" }]
db.collection("authors")
    .get()
    .then(snapshot => {
        snapshot.forEach(doc => {
            const data = {
                id: doc.id,
                firstName: doc.firstName,
                lastName: doc.lastName
            }
            authors.push(data)
            authors.push({ key: "test in loop" })
        })
    })
authors.push({ key: "final test push" })

export default authors
Run Code Online (Sandbox Code Playgroud)

非常感谢!

编辑:我应该注意,这是来自一个单独的getter文件.云功能本身在其他地方并且正常运行.

编辑#2:云功能定义

import authorsArray from "./firestore"

const testServer = express()
testServer.get("*", (req, res) => {
    res.setHeader("Content-Type", "application/json")
    res.send(JSON.stringify({ data: authorsArray }))
})
const test = https.onRequest(testServer)
Run Code Online (Sandbox Code Playgroud)

Hak*_*anC 5

尝试如下更改代码;由于快照数据是doc.data()和id是doc.id

db.collection("authors")
    .get()
    .then(snapshot => {
        snapshot.forEach(doc => {
            const data = {
                id: doc.id,
                firstName: doc.data().firstName,
                lastName: doc.data().lastName
            }
            authors.push(data)
            authors.push({ key: "test in loop" })
        })
Run Code Online (Sandbox Code Playgroud)

供参考,请检查链接