【问题标题】:how to get firestore data with firebase-admin when I use firebase emulators and next.js当我使用firebase模拟器和next.js时如何使用firebase-admin获取firestore数据
【发布时间】:2021-06-21 00:04:00
【问题描述】:

我使用 Next.js 和 firebase 模拟器。 我可以向 firestore 添加一些数据,但无法使用 firebase-admin 获取数据。 如何使用 firebase-admin 获取 api 数据。

// lib/firebaseAdmin.ts

const cert = {
  projectId: process.env.FIREBASE_PROJECT_ID,
  clientEmail: process.env.FIREBASE_CLIENT_EMAIL,
  privateKey: process.env.FIREBASE_PRIVATE_KEY.replace(/\\n/g, "\n"),
}

admin.initializeApp({
  credential: admin.credential.cert(cert),
})

admin.firestore();
// api/foos/[id].tsx

import { NextApiRequest, NextApiResponse } from 'next'
import 'lib/firebaseAdmin'
import { firestore } from 'firebase-admin'

export default async (req: NextApiRequest, res: NextApiResponse<ResType>) => {
  const fooId = req.query.id as string
  const doc = await firestore().collection('foo').doc(fooId).get();
  const result = doc.id ? { id: doc.id, ...doc.data() } : {}
  
  res.status(200).json({
    foos: result
  })
}

【问题讨论】:

  • 如果你想在模拟器上运行 firebase-admin,你必须设置 FIRESTORE_EMULATOR_HOST 环境变量,并将其指向模拟器的 host:port 地址。
  • @HiranyaJayathilaka 我解决了这个问题!非常感谢!
  • @HiranyaJayathilaka 请写下这条评论来回答。

标签: node.js firebase google-cloud-firestore next.js firebase-admin


【解决方案1】:

要针对模拟器运行firebase-admin,请设置FIRESTORE_EMULATOR_HOST 环境变量,并将其指向模拟器的host:port 地址。

【讨论】:

    猜你喜欢
    • 2022-08-20
    • 2019-10-24
    • 2021-12-03
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    相关资源
    最近更新 更多