@@ -7,7 +7,7 @@ import { getConfigMapFromConfigPage } from '@/lib/notion/getNotionConfig'
7
7
import getPageProperties , {
8
8
adjustPageProperties
9
9
} from '@/lib/notion/getPageProperties'
10
- import { getPostBlocks , getSingleBlock } from '@/lib/notion/getPostBlocks'
10
+ import { fetchInBatches , getPostBlocks } from '@/lib/notion/getPostBlocks'
11
11
import { compressImage , mapImgUrl } from '@/lib/notion/mapImage'
12
12
import { deepClone } from '@/lib/utils'
13
13
import { idToUuid } from 'notion-utils'
@@ -371,13 +371,14 @@ const EmptyData = pageId => {
371
371
* @returns {Promise<JSX.Element|null|*> }
372
372
*/
373
373
async function getDataBaseInfoByNotionAPI ( { pageId, from } ) {
374
+ console . log ( '[Fetching Data]' , pageId , from )
374
375
const pageRecordMap = await getPostBlocks ( pageId , from )
375
376
if ( ! pageRecordMap ) {
376
377
console . error ( 'can`t get Notion Data ; Which id is: ' , pageId )
377
378
return { }
378
379
}
379
380
pageId = idToUuid ( pageId )
380
- const block = pageRecordMap . block || { }
381
+ let block = pageRecordMap . block || { }
381
382
const rawMetadata = block [ pageId ] ?. value
382
383
// Check Type Page-Database和Inline-Database
383
384
if (
@@ -402,6 +403,7 @@ async function getDataBaseInfoByNotionAPI({ pageId, from }) {
402
403
collectionView ,
403
404
viewIds
404
405
)
406
+
405
407
if ( pageIds ?. length === 0 ) {
406
408
console . error (
407
409
'获取到的文章列表为空,请检查notion模板' ,
@@ -415,29 +417,22 @@ async function getDataBaseInfoByNotionAPI({ pageId, from }) {
415
417
// console.log('有效Page数量', pageIds?.length)
416
418
}
417
419
418
- // 获取每篇文章基础数据
420
+ // 抓取主数据库最多抓取1000个blocks,溢出的数block这里统一抓取一遍
421
+ const blockIdsNeedFetch = [ ]
419
422
for ( let i = 0 ; i < pageIds . length ; i ++ ) {
420
423
const id = pageIds [ i ]
421
424
const value = block [ id ] ?. value
422
425
if ( ! value ) {
423
- // 如果找不到文章对应的block,说明发生了溢出,使用pageID再去请求
424
- const pageBlock = await getSingleBlock ( id , from )
425
- if ( pageBlock . block [ id ] . value ) {
426
- const properties =
427
- ( await getPageProperties (
428
- id ,
429
- pageBlock . block [ id ] . value ,
430
- schema ,
431
- null ,
432
- getTagOptions ( schema )
433
- ) ) || null
434
- if ( properties ) {
435
- collectionData . push ( properties )
436
- }
437
- }
438
- continue
426
+ blockIdsNeedFetch . push ( id )
439
427
}
428
+ }
429
+ const fetchedBlocks = await fetchInBatches ( blockIdsNeedFetch )
430
+ block = Object . assign ( { } , block , fetchedBlocks )
440
431
432
+ // 获取每篇文章基础数据
433
+ for ( let i = 0 ; i < pageIds . length ; i ++ ) {
434
+ const id = pageIds [ i ]
435
+ const value = block [ id ] ?. value || fetchedBlocks [ id ] ?. value
441
436
const properties =
442
437
( await getPageProperties (
443
438
id ,
@@ -446,6 +441,7 @@ async function getDataBaseInfoByNotionAPI({ pageId, from }) {
446
441
null ,
447
442
getTagOptions ( schema )
448
443
) ) || null
444
+
449
445
if ( properties ) {
450
446
collectionData . push ( properties )
451
447
}
0 commit comments