Page 为空时的处理

This commit is contained in:
tangly1024.com
2023-04-24 17:49:04 +08:00
parent 19b1b43c96
commit bcb8620d31
3 changed files with 31 additions and 12 deletions

View File

@@ -68,7 +68,7 @@ export async function getNotionPageData({ pageId, from }) {
console.log('[命中缓存]:', `from:${from}`, `root-page-id:${pageId}`) console.log('[命中缓存]:', `from:${from}`, `root-page-id:${pageId}`)
return data return data
} }
const pageRecordMap = await getPageRecordMapByNotionAPI({ pageId, from }) const pageRecordMap = await getDataBaseInfoByNotionAPI({ pageId, from })
// 存入缓存 // 存入缓存
if (pageRecordMap) { if (pageRecordMap) {
await setDataToCache(cacheKey, pageRecordMap) await setDataToCache(cacheKey, pageRecordMap)
@@ -177,24 +177,44 @@ async function getNotice(post) {
* 调用NotionAPI获取Page数据 * 调用NotionAPI获取Page数据
* @returns {Promise<JSX.Element|null|*>} * @returns {Promise<JSX.Element|null|*>}
*/ */
async function getPageRecordMapByNotionAPI({ pageId, from }) { async function getDataBaseInfoByNotionAPI({ pageId, from }) {
const pageRecordMap = await getPostBlocks(pageId, from) const pageRecordMap = await getPostBlocks(pageId, from)
if (!pageRecordMap) { if (!pageRecordMap) {
return [] console.error('can`t get Notion Data ; Which id is: ', pageId)
return {}
} }
pageId = idToUuid(pageId) pageId = idToUuid(pageId)
const block = pageRecordMap.block const block = pageRecordMap.block || {}
const rawMetadata = block[pageId]?.value const rawMetadata = block[pageId]?.value
// Check Type Page-Database和Inline-Database // Check Type Page-Database和Inline-Database
if ( if (
rawMetadata?.type !== 'collection_view_page' && rawMetadata?.type !== 'collection_view_page' && rawMetadata?.type !== 'collection_view'
rawMetadata?.type !== 'collection_view'
) { ) {
console.warn(`pageId "${pageId}" is not a database`) console.error(`pageId "${pageId}" is not a database`)
return null return {
notice: null,
siteInfo: getBlogInfo({}),
allPages: [{ id: 1, title: `无法获取Notion数据请检查Notion_ID \n 当前 ${pageId}`, summary: '访问文档获取帮助→ https://tangly1024.com/article/vercel-deploy-notion-next', status: 'Published', type: 'Post', slug: '13a171332816461db29d50e9f575b00d', date: { start_date: '2023-04-24', lastEditedTime: '2023-04-24', tagItems: [] } }],
collection: [],
collectionQuery: {},
collectionId: null,
collectionView: {},
viewIds: [],
block: {},
schema: {},
tagOptions: [],
categoryOptions: [],
rawMetadata: {},
customNav: [],
customMenu: [],
postCount: 1,
pageIds: [],
latestPosts: []
}
} }
const collection = Object.values(pageRecordMap.collection)[0]?.value const collection = Object.values(pageRecordMap.collection)[0]?.value || {}
const siteInfo = getBlogInfo({ collection, block })
const collectionId = rawMetadata?.collection_id const collectionId = rawMetadata?.collection_id
const collectionQuery = pageRecordMap.collection_query const collectionQuery = pageRecordMap.collection_query
const collectionView = pageRecordMap.collection_view const collectionView = pageRecordMap.collection_view
@@ -242,7 +262,6 @@ async function getPageRecordMapByNotionAPI({ pageId, from }) {
const notice = await getNotice(collectionData.filter(post => { return post && post?.type && post?.type === 'Notice' && post.status === 'Published' })?.[0]) const notice = await getNotice(collectionData.filter(post => { return post && post?.type && post?.type === 'Notice' && post.status === 'Published' })?.[0])
const categoryOptions = getAllCategories({ allPages, categoryOptions: getCategoryOptions(schema) }) const categoryOptions = getAllCategories({ allPages, categoryOptions: getCategoryOptions(schema) })
const tagOptions = getAllTags({ allPages, tagOptions: getTagOptions(schema) }) const tagOptions = getAllTags({ allPages, tagOptions: getTagOptions(schema) })
const siteInfo = getBlogInfo({ collection, block })
const customNav = getCustomNav({ allPages: collectionData.filter(post => post.type === 'Page' && post.status === 'Published') }) const customNav = getCustomNav({ allPages: collectionData.filter(post => post.type === 'Page' && post.status === 'Published') })
// 新的菜单 // 新的菜单
const customMenu = await getCustomMenu({ collectionData }) const customMenu = await getCustomMenu({ collectionData })

View File

@@ -78,7 +78,7 @@ export const BlogPostCardInfo = ({ post, showPreview, showPageCover, showSummary
<div className="md:flex-nowrap flex-wrap md:justify-start inline-block"> <div className="md:flex-nowrap flex-wrap md:justify-start inline-block">
<div> <div>
{' '} {' '}
{post.tagItems.map(tag => ( {post.tagItems?.map(tag => (
<TagItemMini key={tag.name} tag={tag} /> <TagItemMini key={tag.name} tag={tag} />
))} ))}
</div> </div>

View File

@@ -60,7 +60,7 @@ const BlogPostCard = ({ post, showSummary }) => {
<div className="md:flex-nowrap flex-wrap md:justify-start inline-block"> <div className="md:flex-nowrap flex-wrap md:justify-start inline-block">
<div> <div>
{' '} {' '}
{post.tagItems.map(tag => ( {post.tagItems?.map(tag => (
<TagItemMini key={tag.name} tag={tag} /> <TagItemMini key={tag.name} tag={tag} />
))} ))}
</div> </div>