ハマったので再現方法と解決方法をメモします。
再現方法
まず、test1、test2データベースを作ります。


test1の「Related to test2」プロパティはtest2へのRelationになっています。
この状態でtest1を「Query a database」APIで取得すると、a-1,b-2が取得できます。
これは想定通りの挙動です。
次に、test2の1,2レコードを削除します。

当然、test1の「Related to test2」プロパティも削除されています。

もう一度、この状態でtest1を「Query a database」APIで取得すると、
なぜか、a-1,b-2が取得できてしまいます。
これにハマりました。
解決方法
削除しているのになぜ取得できてしまうのか、何かキャッシュ的なものが残っているのかと考えていると、ふと「Trash(ゴミ箱)」が目につきました。まさかと思って覗いてみると・・・

削除したはずのtest2の1,2レコードが「Trash(ゴミ箱)」に残っている!
試しにこれをひとつずつ削除してみました。
その結果、無事、a-1,b-2が取得できなくなりました(削除されました)!
・レスポンスデータ(抜粋)
{
"object": "list",
"results": [
{
"properties": {
"Related to test2 (Tags)": {
"id": "NBUI",
"type": "relation",
"relation": [],
},
"Name": {
"id": "title",
"type": "title",
"title": [
{
"type": "text",
"text": {
"content": "b",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "b",
"href": null
}
],
}
}
},
{
"properties": {
"Related to test2 (Tags)": {
"id": "NBUI",
"type": "relation",
"relation": [],
},
"Name": {
"id": "title",
"type": "title",
"title": [
{
"type": "text",
"text": {
"content": "a",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "a",
"href": null
}
],
}
}
}
],
}
まとめ
バグなのか仕様なのかはわかりませんが、リレーション先のデータを削除しただけでは、ゴミ箱に残っている限りは、NotionAPIで取得できてしまうようです。
ゴミ箱から削除、までしっかりやるのが吉です。
というか、ゴミ箱に残るのはよいのですが、それが存在するリレーションデータとして取得できてしまうのが仕様とは思えません。取得しないように修正してほしいところです。
最後に宣伝です。
コメント