You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Firestore读取数据到自建网站提示数据库不存在如何解决

解决方案

1. 修复Admin SDK初始化配置

当前admin.initializeApp配置存在核心错误:databaseURL参数填入了服务账号邮箱,该参数本为实时数据库所用,仅需填写对应数据库地址,若仅使用Firestore可直接省略该参数。
同时云函数运行环境默认已绑定项目权限,无需手动引入服务账号文件,且需保证全局仅初始化一次Admin SDK,避免和其他云函数文件的初始化操作冲突:

// 删掉手动引入serviceAccount的代码,直接无参初始化即可
admin.initializeApp();

如果必须本地使用服务账号验证,仅需传入credential参数即可,无需额外配置databaseURL。

2. 修正getFirestore函数逻辑

当前函数没有返回值,且admin.firestore()为同步方法无需await,回调写法和async/await混用逻辑混乱,修改为统一的async/await写法:

async function getFirestore() {
    const firestore_con = admin.firestore();
    try {
        const doc = await firestore_con.collection('device').doc("device").get();
        if (doc.exists) {
            return doc.data();
        } else {
            console.log("No such document!");
            return null;
        }
    } catch (err) {
        console.log('Error getting document', err);
        return null;
    }
}

3. 匹配数据库实际路径

检查Firestore中的实际数据结构是否和代码路径一致:

  • 确认集合名拼写为device,无大小写、拼写偏差
  • 确认device集合下存在ID为device的文档,若实际文档ID为设备编号等其他值,需修改doc()方法内的参数为对应ID

4. 本地测试配置调整

使用firebase serve测试时默认会连接线上Firestore,需先执行firebase use 你的项目ID切换到对应项目,且保证CLI登录的账号有数据库访问权限。
如果要本地离线测试,可启动Firestore模拟器,执行命令:
firebase emulators:start --only hosting,functions,firestore

5. 清理冗余代码

删除代码中无用的引入行,避免不必要的干扰:

// 以下两行可直接删除
const { service } = require("firebase-functions/v1/analytics");
const { response } = require("express");

内容的提问来源于stack exchange,提问作者Javier Wong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:24:07