【发布时间】:2021-05-11 00:22:28
【问题描述】:
我是 Next.js 的新手,我正在尝试使用带有 firebase 的 getStaticPaths 和 getStaticProps 获取详细信息页面。
import firebase from '../../firebase'
export const getStaticPaths = async () => {
let posts = []
const ref = firebase.firestore().collection('posts')
try {
let allPosts = await ref.get()
for (const doc of allPosts.docs) {
console.log(doc.id, '=>', doc.data())
console.log('the id is....')
let data = doc.data()
console.log(data.ytid)
posts.push({
title: data.title,
ytid: data.ytid,
})
}
} catch (e) {
console.log(e)
}
// Get the paths we want to pre-render based on posts
const paths = posts.map((post) => ({
params: { id: post.ytid },
}))
return { paths, fallback: false }
}
export const getStaticProps = async (context) => {
const id = context.params.id
console.log('id is')
console.log(id)
let post = []
try {
const ref = firebase.firestore().collection('posts').where('ytid', '==', id)
const qsnapshot = await ref.get()
qsnapshot.forEach((doc) => {
const data = doc.data()
console.log('the title is...')
console.log(data.title)
post.title = data.title
post.ytid = data.ytid
})
return {
props: { post: post },
revalidate: 1,
}
} catch (e) {
console.log(e)
}
}
const Details = ({ post }) => {
console.log('posting...')
console.log(post.title)
return (
<div>
<div className='mx-auto'>
<h2>Post Details Page</h2>
<h3 className='text-black'>{post.title}</h3>
<h4>Details here</h4>
</div>
</div>
)
}
export default Details
不知何故,post.title 没有显示在详细信息页面的 h3 标记中,但是当我查看控制台终端时,它会打印在那里。所以它显示在后端而不是前端。不太确定它是否是由某些配置问题引起的,我们将不胜感激。
【问题讨论】:
标签: reactjs google-cloud-firestore next.js