请求将以下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://tools.ietf.org/html/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_by'变量我假设' find_by':' id'并且'找到':value_from_token?
另外,我不能在孔文档中进行简单的GET / UPDATE,因为用户没有收到孔文档,因此更新会危及数据。