Firebase 9 + NextJS 12 - 预计 collection() 的第一个参数是 CollectionReference、DocumentReference 或 FirebaseFirestore

2023-12-03

我正在尝试在 NextJS 应用程序中创建一个简单的 Firestore 数据库查询。

I have clientApp.ts看起来像这样:

import 'firebase/compat/auth';
import 'firebase/compat/firestore';
import { initializeApp } from 'firebase/app';
import { getFirestore } from 'firebase/firestore';
import { getStorage } from 'firebase/storage';

const firebaseConfig = {
  apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY,
  authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN,
  projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID,
  storageBucket: process.env.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET,
  messagingSenderId: process.env.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID,
  appId: process.env.NEXT_PUBLIC_FIREBASE_APP_ID,
};

// Initialize Firebase
const firebaseApp = initializeApp(firebaseConfig);
const db = getFirestore(firebaseApp);
// const storage = getStorage();
// const analytics = getAnalytics(firebase);

export { firebaseApp, db };

然后我有一些 index.js 文件,其中有一个方法:

    import { collection, query, where, getDocs, getDoc, onSnapshot, doc, limit } from 'firebase/firestore';
    import { db } from '../firebase/clientApp';

    export const getServerSideProps = async (ctx: GetServerSidePropsContext) => {
      try {
        const videoRef = collection(db, 'videos');
        const q = query(videoRef, limit(8));
        const querySnapshot = await getDocs(q);
        querySnapshot.forEach((doc) => {
          console.log(doc.id, ' => ', doc.data());
        });
        return { props: { x: [] } };
      } catch (err) {
        console.log(err);
        return { props: { x: [] } };
      }
    };

它将最终在catch出现错误的块:

FirestoreError [FirebaseError]: Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore
    at collection (file:///C:/Develop/petrolhat-nextjs/node_modules/@firebase/firestore/dist/index.node.mjs:19949:19)
    at getServerSideProps (webpack-internal:///./pages/index.tsx:108:88)
    at Object.renderToHTML (C:\Develop\petrolhat-nextjs\node_modules\next\dist\server\render.js:479:26)
    at async doRender (C:\Develop\petrolhat-nextjs\node_modules\next\dist\server\next-server.js:1389:38)
    at async C:\Develop\petrolhat-nextjs\node_modules\next\dist\server\next-server.js:1484:28
    at async C:\Develop\petrolhat-nextjs\node_modules\next\dist\server\response-cache.js:63:36 {
  code: 'invalid-argument',
  toString: [Function (anonymous)]
}

如果我在使用之前使用 console.log(db) ,它将返回:

Firestore {
  _credentials: FirebaseCredentialsProvider {
    authProvider: Provider {
      name: 'auth-internal',
      container: [ComponentContainer],
      component: [Component],
      instances: Map(0) {},
      instancesDeferred: Map(0) {},
      instancesOptions: Map(0) {},
      onInitCallbacks: Map(0) {}
...

所以在我看来 DB 设置正确。所以我尝试用谷歌搜索很多并找到一个可能的解决方案,我还在 StackOverflow 中检查了这些主题,但没有任何帮助:

  1. Firebase 期望 collection() 的第一个参数是 CollectionReference、DocumentReference 或 FirebaseFirestore
  2. Firestore v9 预计 collection() 的第一个参数是 CollectionReference、DocumentReference 或 FirebaseFirestore
  3. V 9 FirebaseError:预计 collection() 的第一个参数是 CollectionReference、DocumentReference 或 FirebaseFirestore

因此,如果有人知道我做错了什么,那就太好了!


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Firebase 9 + NextJS 12 - 预计 collection() 的第一个参数是 CollectionReference、DocumentReference 或 FirebaseFirestore 的相关文章

随机推荐

  • IIS 7 URL 重写匹配 URL

    我正在尝试使用 URL 重写模块在 IIS 7 中设置规范的默认 URL 我认为我误解了 匹配 URL 字段的使用方式 以下似乎没有做任何事情
  • 使用事件调度程序自动备份

    我正在尝试使用 MySQL 中的事件调度程序创建自动备份 这是我的脚本 CREATE DEFINER root localhost EVENT Backup ON SCHEDULE EVERY 1 WEEK STARTS 2013 06 1
  • 事件触发之前的对象处置和垃圾收集

    与我交谈的某人提出了一段代码 private void DownloadInformation string id using WebClient wc new WebClient wc DownloadStringCompleted ne
  • 在java中实现抽象方法/类

    我可以在java中的抽象基类A中实现抽象方法吗 如果答案是肯定的 并且基类 A 中有一个已实现的抽象方法 并且有一个来自 A 的派生类 B B 不是抽象的 B 还必须实现那个基本抽象方法吗 如果我正确理解你的问题 是的 public abs
  • 在两个未在 twilio 中注册的号码之间拨打电话

    有什么方法可以在我的两个用户之间拨打电话吗 我的意思是 我有一个带有注册号码的 twilio 帐户 我必须给我的客户 Bill 打电话 所以当他接听电话时 电话应该重定向到 Bill 选择的另一个客户 让我们说 Joe 因此 比尔点击了一个
  • 使用静态函数实现特征对特征

    trait Trait
  • 如何在c#中从RGB555转换为RGB888?

    我需要将 16 位 XRGB1555 转换为 24 位 RGB888 我的函数如下 但它并不完美 即值 0b11111 将给出 248 作为像素值 而不是 255 该函数适用于小端 但可以轻松修改为大端 public static Colo
  • 工头没有反映变化

    我用这篇文章搭建了facebook app开发的开发环境 https devcenter heroku com articles facebook create an app除了 FOREMAN 之外 一切都很好 问题是 每次我在脚本中进行
  • 如何在matlab中绘制非线性微分方程

    Dx y Dy k y x 3 9 8 cos t inits x 0 0 y 0 0 这些是我想要绘制的微分方程 首先 我尝试求解微分方程 然后绘制图形 Dsolve Dx y Dy k y x 3 9 8 cos t inits 然而
  • android openFileOutput 有什么问题?

    我正在尝试使用 openFileOutput 函数 但它无法编译并且无法识别该函数 我使用的是android sdk 1 6 这是sdk的问题吗 这是参数问题吗 import java io FileOutputStream public
  • 约束最小二乘法

    我正在 R 中对人均天然气使用量进行简单回归 回归公式如下 gas b lt lm log gasq pop log gasp log pcincome log pn log pd log ps log years data gas sum
  • 带有图像和 2 TextView 的 TableRow

    我在做这样的事情时遇到问题 http imageshack us photo my images 824 examplehm png 我的 xml 代码在行中显示 3 列 但我想要 2 列 并且第二列必须分为两个水平部分 My xml
  • ffmpeg 中的多个命名管道

    这个问题是后续这个问题 在我的应用程序中 我想修改各种mp3 然后将它们混合在一起 我知道我可以在 FFmpeg 中使用单个命令行来完成此操作 但它最终可能会非常混乱 因为我需要在每个样本上使用各种过滤器 而我有五个过滤器 我的想法是单独编
  • Windows批处理文件-分割字符串以设置变量

    我觉得我在用 FOR 循环选项兜圈子 我试图获取一个字符串 命令的输出 并用逗号分隔它 然后使用每个值来设置 例如 String USER Andy IP 1 2 3 4 HOSTNAME foobar PORT 1234 所以我想用逗号分
  • SonarQube:扫描过程忽略 lcov.info

    我正在扫描ui项目 源代码位于typescript gulp test coverage产生 js文件 然后扫描其覆盖范围 每个 ts文件得到一个 js文件就在它旁边 在同一位置 我将扫描仪指向lcov info文件如下 sonar jav
  • jssor 与 Angular 2 Typescript

    我正在使用 Angular 2 开发一个网站 此时 我已经购买了 Jssor 的订阅 以便为运行到同一页面的 3 个以上单独的滑块生成图像滑块 我当前的问题是文档加载后生成的动态滑块 但未显示 我在 npmjs com 中找到了 jssor
  • 如何在R中绘制完整的图?

    我想在 R 中绘制完整的图表 我怎样才能做到这一点 我在 CRAN 上发现只有一个包具有生成完整图表的功能 但是这个包 即 RnavGraph 没有安装 而是以错误状态退出 进一步搜索似乎很困难 因为图的含义不同 图不仅与图结构相关 而且还
  • 修改颜色选择器面板

    我正在创建一个颜色选择器 需要修改其中一个颜色选择器面板 我想要的是 我想通过 RGB 字段输入输入值来设置颜色 问题是 RGB 值似乎被禁用 api 中是否有一种方法可以打开 RGB 输入以获取值 这里看起来不错 import javax
  • CSS3 中是否有相当于 jQuery 的 :first 选择器?

    我有以下标记 div class a div div class b div div class b div div class b div div class c div 我正在尝试瞄准first and last div 与类b 如果我
  • Firebase 9 + NextJS 12 - 预计 collection() 的第一个参数是 CollectionReference、DocumentReference 或 FirebaseFirestore

    我正在尝试在 NextJS 应用程序中创建一个简单的 Firestore 数据库查询 I have clientApp ts看起来像这样 import firebase compat auth import firebase compat