使用JavaScript调用Notion API查询数据库仅返回属性ID问题
解决Notion JS SDK查询数据库仅返回属性ID的问题
问题分析
你遇到的情况是:使用Notion官方JavaScript SDK查询数据库时,返回的页面属性仅包含id字段,但相同的请求在Postman中能获取完整属性内容。这通常是由于SDK默认使用的API版本较低,或者SDK版本未更新导致的响应结构差异。
解决方案
1. 更新Notion SDK到最新版本
旧版本的SDK可能存在响应解析或API版本兼容问题,先执行更新:
npm install @notionhq/client@latest
2. 显式指定最新的Notion API版本
初始化Client时,指定当前最新的API版本(Notion API版本以日期命名,当前推荐使用2022-06-28或更高):
const dotenv = require('dotenv').config() const {Client} = require('@notionhq/client') const notion = new Client({ auth: process.env.NOTION_TOKEN, notionVersion: '2022-06-28' // 指定最新API版本 }) const database_id = process.env.NOTION_DATABASE_ID const getVideos = async () => { const {results} = await notion.databases.query({ database_id: database_id, }) const videos = results.map((page) => { console.log(page.properties) // 现在应该能看到完整属性结构 }) } getVideos()
3. 验证属性内容
如果属性本身没有值(比如标题为空、日期未设置),Notion API仍会仅返回id和type字段,这属于正常情况。你可以检查数据库中对应页面的属性是否已填充内容,或者通过访问属性的type字段来获取具体值:
// 示例:获取名为"Name"的标题属性和"Publish_Date"的日期属性内容 const videos = results.map((page) => { const name = page.properties.Name.title?.[0]?.plain_text || '无标题' const publishDate = page.properties.Publish_Date.date?.start || '未设置日期' return { name, publishDate } }) console.log(videos)
内容的提问来源于stack exchange,提问作者Krishna2752
相关产品推荐
相关产品推荐

