未使用firebase函数从firestore获取数据

问题描述 投票:0回答:1

我创建了一个 firebase 函数来测试如何从 firebase 函数获取数据。但是,我无法获取任何数据。

注意:我有另一个功能,可以毫无问题地列出身份验证中的所有用户。

这是我的代码:

import {onRequest} from "firebase-functions/v2/https";
import * as logger from "firebase-functions/logger";
import * as admin from "firebase-admin";

const serviceAccount = require('../serviceAccountKey.json');

// Initialize Firebase Admin SDK
admin.initializeApp({
    credential: admin.credential.cert(serviceAccount),
  });

const db = admin.firestore();

export const listUserProfiles = onRequest(async (request, response) => {    
    response.set('Access-Control-Allow-Origin', '*');

    try {
        const ref = db.collection("UserProfiles").doc("cnZbRQtnCnQ52kTbcxI6Zq7d3VA3");
        const docSnap = await ref.get();
        if (docSnap.exists) {
            console.log("Document data:", docSnap.data());
            response.status(200).json(docSnap.data());
        } else {
            console.log("No such UserProfiles!");
            response.status(200).json({});
        }
    }
    catch(error) {
        console.log('Error Getting profile:', error);
        response.status(500);
        response.statusMessage = `Error Getting profile: ${JSON.stringify(error)}`;
        response.send(error);
    }
        
})

当我到达端点时,日志显示

No such UserProfiles!

我有一个 Firestore 规则,允许读取此集合。 我已经检查了文档

cnZbRQtnCnQ52kTbcxI6Zq7d3VA3
并且它存在于集合中

为什么我收不到数据?

我期待返回文档内容

firebase google-cloud-firestore google-cloud-functions
1个回答
0
投票

我不确定关键字

exists
你可以尝试检查
docSnap.data()

export const listUserProfiles = onRequest(async (request, response) => {    
    response.set('Access-Control-Allow-Origin', '*');

    try {
        const ref = db.collection("UserProfiles").doc("cnZbRQtnCnQ52kTbcxI6Zq7d3VA3");
        const docSnap = await ref.get();
        const data = docSnap.data();

        if (data === undefined) {
            console.log("No such UserProfiles!");
            response.status(200).json({});
        } else {
            console.log("Document data:", data);
            response.status(200).json(data);
        }
    }
    catch(error) {
        console.log('Error Getting profile:', error);
        response.status(500);
        response.statusMessage = `Error Getting profile: ${JSON.stringify(error)}`;
        response.send(error);
    }
        
})
© www.soinside.com 2019 - 2024. All rights reserved.