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

为何调用.get()时出现TypeError: posts.get is not a function错误?

问题原因及解决办法

核心原因

你使用的是Firebase v9及以上的模块化SDK,但代码写法沿用了v8及以下的命名空间风格,两者API结构完全不同:

  • v9+的collection()返回的是集合引用对象,本身没有.get()方法
  • 旧版v8的db.collection()返回的对象才带有.get()方法

两种解决方式

方式1:使用v9+模块化API(推荐)

需要导入getDocs方法,通过它来获取集合的文档快照:

import { collection, getDocs } from "firebase/firestore";

const posts = collection(db, 'Posts');

async function getAllDocs() {
    const snapshot = await getDocs(posts);
    snapshot.forEach(doc => {
      console.log(doc.id, '=>', doc.data());
    });
}

方式2:兼容旧版命名空间写法

如果想继续用旧版代码风格,可以导入Firebase的compat兼容包:

import firebase from "firebase/compat/app";
import "firebase/compat/firestore";

const db = firebase.firestore();
const posts = db.collection('Posts');

async function getAllDocs() {
    const snapshot = await posts.get();
    snapshot.forEach(doc => {
      console.log(doc.id, '=>', doc.data());
    });
}

注:Firebase官方文档会同时展示两种版本的代码,注意区分你当前使用的SDK版本对应的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 00:46:09