const dotenv = require('dotenv').config()
const {Client} = require('@notionhq/client')
const notion = new Client({
auth: process.env.NOTION_TOKEN
})
const database_id = process.env.NOTION_DATABASE_ID
const getVideos = async () => {
// code below used to query the database
const {results} = await notion.databases.query({
database_id: database_id,
})
const videos = results.map((page) => {
console.log(page.properties)
})
}
getVideos()page.properties按照我的数据库正确地显示所有属性(每个类型都是对象),但是每个对象只具有id属性。
发布于 2022-08-19 20:40:12
您可能正在使用概念邮递员工作区的过时版本,因为在2022年6月28日发布了一个新版本的概念API,它现在要求您通过端点获取各个属性。
在这种情况下,您需要遍历数据库中的所有记录和每个记录中的所有属性:
const videos = await Promise.all(
results.map(
async (page) => {
const properties = {};
for (const propertyName of Object.keys(page.properties)) {
const propertyData = await notion.pages.properties.retrieve({
page_id: page.id,
property_id: page.properties[propertyName].id,
});
properties[propertyName] = propertyData;
}
return properties;
}
)
)以下是公告的摘录
今天,我们发布了具有以下向后不兼容更改的概念版本
2022-06-28:
以前,从页面端点以及查询数据库和搜索端点返回的页面对象返回一个属性字段,该字段包含页面的所有属性及其值。
虽然方便,但返回所有属性的准确结果会导致性能差,导致大量提及的大型数据库或页面出现超时。为了对抗性能,在3月1日,我们添加了一个免责声明,即页面对象停止返回超过25次提到其他对象的页面的准确结果(这会影响类型title、rich_text、relation、people、汇总和公式的属性)。
在2021年10月,我们引入了一种通过检索页面属性项端点更准确地检索单个页面属性的方法。有了这个端点,我们能够分页复杂的属性,其中涉及额外的查找。
使用版本2022-06-28,从页面对象中移除类型和属性值。因此,所有属性值检索都必须通过检索页面属性项终结点进行。
https://stackoverflow.com/questions/73352550
复制相似问题