当我使用 firebase 模拟器和 next.js 时如何使用 firebase-admin 获取 firestore 数据
how to get firestore data with firebase-admin when I use firebase emulators and next.js
我使用 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
模拟器地址
我使用 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
模拟器地址