【问题标题】:Getting the page title from a database query in Notion API?从 Notion API 中的数据库查询中获取页面标题?
【发布时间】:2021-08-24 17:41:09
【问题描述】:

数据库查询中每个 property_name 的索引和键都是动态的。唯一的常量是类型:title 属性的“title”。标题本身也嵌套在一个数组中。我已在下面的架构中将其标记为我需要它。此外,只有一个属性是 type:“title”。

我几乎尝试了各种组合的每个对象和数组原型函数,但由于嵌套的对象和数组,以及 property_name 索引和键是未知的,我无法弄清楚。

我想要的结果是 obj.map() 将结果中每个页面的纯文本标题和 page_id 转换为 JSX 对象。

架构:

{
    object
    results [
        {
            object: page
            page_id: 442k3j423j4hk23kjh423
            created_time
            last_edited
            parent {
                type
                database_id 
            }
            archived 
            url
            properties {
                property_name {
                    id
                    type: 'title'
                    title [
                        plain_text: 'I NEED THIS'
                        id
                    ]
                }
                property_name {
                    id
                    type
                }
                property_name {
                    id
                    type
                }
            }
        },
        {
            object: page
            id
            created_time
            last_edited
            parent {
                type
                database_id 
            }
            archived 
            url
            properties {
                property_name {
                    id
                    type
                }
                property_name {
                    id
                    type
                }
                property_name {
                    id
                    type
                }
            }
        },
    ]

}

映射所需的结果对象:

var pages {
    page1: {
        page_id: '23j4lk23j4lk23j',
        page_title: 'This is a title'
    }
    page1: {
        page_id: '23j4lk23j4lk23j',
        page_title: 'This is a title'
    }
}

【问题讨论】:

    标签: javascript reactjs notion-api


    【解决方案1】:

    了解下面的内部地图概念并在您的代码中实现

    首先,要访问主要数据让我们假设,

    const handleData = res.data

    这里你需要 page_id 和 plain_text,来获取这些数据... 做一些像这样的内部地图方法

    handleData.map((item)=> (
         item.results.map((inneritem)=> ( <p> {inneritem.page_id} </p> 
        inneritem.title.map((nesteditem)=> ( <p> {nesteditem.plain_text} </p> ) )
        ))
    ))
    

    【讨论】:

    • 如果每个页面只有一个属性,但每个页面有多个属性,但只有一个属性是标题,并且包含标题[]数组,这将非常有用。
    【解决方案2】:

    我使用notion_client 与网站进行交互。 这个 sn-p 得到一个页面和打印标题

    client = notion_client.Client(auth=notion_token)
    response = client.databases.retrieve(notion_database_id)
    print(response['title'][0]['plain_text'])
    

    这个概念有糟糕的 API 和文档?

    【讨论】:

    • 我知道如何从单个页面获取信息,因为当您请求单个页面时标题是顶级键,问题仅出现在查询数据库中(列出数据库中的每个页面),因为结果列表中的每个页面都有一个属性对象下方列出的标题,该属性对象是动态的,因此无法使用普通索引或 .key 表示法检索。我可以做一个 .map() 并为我从 DB Query 获得的每个页面提交一个 API 请求,但这可能是针对单个 DB Query 的数百个 API 请求,当我已经拥有数据时这很荒谬,只是不要'不知道怎么去。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 2022-01-23
    • 2023-02-19
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 2011-03-06
    相关资源
    最近更新 更多