调用Notion REST API查询数据库仅返回部分属性的问题咨询
缺失属性的常见原因如下:
- 废弃接口的限制:你代码中调用的
notion.databases.list()是Notion官方已废弃的接口,该接口已停止功能维护,本身就不会返回数据库的全量属性元数据,这是你调用list_db只拿到16个属性的核心原因。 - 空值属性默认不返回:Notion API设计规则为,页面级的查询结果(也就是query_db返回的页面对象)中,没有填写任何值的属性不会被包含在返回结果里,你查询到的首个页面少了2个属性,大概率是这两个属性在该页面中为空。
- API版本不兼容:如果你使用的Notion SDK对应的API版本较低,不支持部分新增的属性类型(比如高级公式、按钮、进度条、特殊关联属性等),不兼容的属性会被直接过滤,不会出现在返回结果中。
- 权限限制:如果你的数据库对部分属性设置了精细化的可见权限(比如仅创建者可见、仅特定角色可见),而你使用的集成令牌没有对应属性的访问权限,这些受限属性也不会被返回。
修复建议:
- 替换已废弃的
databases.list()接口,改用官方推荐的搜索接口获取数据库元数据,示例代码:
results = self.notion.search( filter={ "value": "database", "property": "object" } )
- 如果需要获取页面的全量属性,可以先通过数据库元数据拿到所有属性的key列表,再逐个去页面对象的
properties字段中匹配,不存在的字段即可判定为空值。 - 升级你的Notion SDK到最新版本,同时在Notion开发者后台确认你的集成使用的是最新版API。
- 检查目标数据库的属性权限设置,确保集成对所有属性都有访问权限。
内容的提问来源于stack exchange,提问作者Spectrem
相关产品推荐
相关产品推荐

