次の upsert を REST API に要求する適切な方法は何ですか?
フロントエンド アプリケーションへの最も要求の多いリターンに基づく NoSQL コレクションの構築に苦労しています。
次のドキュメントがあるとします。
{
'user' : {
'private_comments': [
//object available only to user 1
{
'id': 1,
'bar': 'He is very good',
'...': '...'
},
//object available only to user 2
{
'id': 2,
'bar': 'He is very bad',
'...': '...'
}
],
'public_comments': '' //infos available to all users
}
}
要素を user.private_comments 配列にアップサートする必要があります。
https://www.rfc-editor.org/rfc/rfc6902#appendix-A.5によると、次のデータにパッチを適用する置換命令を要求できます。
{ 'op': 'replace', 'path': '/user/comments/$index', 'value': 'Actually, he is OK'}
問題は、この場合「$index」が不明であることです。
私が思いついた可能な解決策は、次の操作のようなものを作成することでした:
{ 'op': 'upsert', 'find_by': 'id', 'find': 1, 'path': '/user/comments', 'value': 'Nope, he really sucks' }
ただし、API を実装するユーザーは、PATCH 要求内で id 値を指定しないでください。この値は、受信トークンを介して既にアクセス可能であるためです。操作を次のように単純化する必要があります。
{ 'op': 'upsert', 'path': '/user/comments', 'value': 'Nope, he really sucks' }
バックエンドで処理するため、「find」変数と「find_by」変数を使用しないアップサート操作の場合、「find_by」:「id」および「find」:value_from_token?
また、ユーザーがホール ドキュメントを受信しないため、ホール ドキュメントで単純な GET/UPDATE を実行できず、更新によってデータが危険にさらされます。