首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用概念API使用JavaScript查询数据库,它只返回所有属性的id,而在Postman中相同。

使用概念API使用JavaScript查询数据库,它只返回所有属性的id,而在Postman中相同。
EN

Stack Overflow用户
提问于 2022-08-14 14:46:03
回答 1查看 672关注 0票数 0
代码语言:javascript
复制
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属性。

EN

回答 1

Stack Overflow用户

发布于 2022-08-19 20:40:12

您可能正在使用概念邮递员工作区的过时版本,因为在2022年6月28日发布了一个新版本的概念API,它现在要求您通过端点获取各个属性。

在这种情况下,您需要遍历数据库中的所有记录和每个记录中的所有属性:

代码语言:javascript
复制
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,从页面对象中移除类型和属性值。因此,所有属性值检索都必须通过检索页面属性项终结点进行。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73352550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档