Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用MongoDB嵌入集合(子文档数组)会违反REST吗?_Mongodb_Rest_Subdocument - Fatal编程技术网

使用MongoDB嵌入集合(子文档数组)会违反REST吗?

使用MongoDB嵌入集合(子文档数组)会违反REST吗?,mongodb,rest,subdocument,Mongodb,Rest,Subdocument,假设我的Mongo数据库中有一个users集合: users _id emailAddress firstName lastName passwordHash accessLogs: [ ... ] createdAt 如您所见,用户文档可以包含一个accesslog数组。太好了 但假设我想更新一个用户记录,并对使用此数据库的RESTful API执行一个PUT/users/:id请求。有了推杆,你就应该拿回你放进去的东西。假设用户已登录500次。为了避免违反RES

假设我的Mongo数据库中有一个
users
集合:

users
  _id
  emailAddress
  firstName
  lastName
  passwordHash
  accessLogs: [ ... ]
  createdAt
如您所见,用户文档可以包含一个accesslog数组。太好了

但假设我想更新一个用户记录,并对使用此数据库的RESTful API执行一个
PUT/users/:id
请求。有了推杆,你就应该拿回你放进去的东西。假设用户已登录500次。为了避免违反REST,这是否意味着我的PUT数据应该包括accessLogs数组及其所有项


我认为请求处理程序可以只更新除accesslog之外的所有内容。

在最严格的定义中,
PUT确实应该替换对象的内容。如果您想用部分数据/指令更新现有对象。这将允许您指定要添加访问日志(或不修改它们),而不必发送整个对象——只需发送需要更新的内容的说明。

在最严格的定义中,PUT
确实应该替换对象的内容。如果您想用部分数据/指令更新现有对象。这将允许您指定要添加accessLogs(或不修改它们),而不必发送整个对象——只需发送需要更新的内容的说明。

在您的情况下,
accessLogs
是生成的只读属性,因此它不必是PUT请求的一部分。您也不发送
\u id
属性,如果某些属性具有默认值,您也不必发送这些属性

PUT方法要求将封闭的实体存储在 提供的请求URI。如果请求URI引用已存在的 资源,则应将封闭的实体视为已修改的实体 位于源服务器上的版本

PUT和修补程序请求之间的差异反映在 服务器处理封闭实体以修改资源的方式 由请求URI标识。在PUT请求中,包含的实体 被视为存储在上的资源的修改版本 源服务器,并且客户端正在请求保存存储的版本 替换。但是,对于PATCH,封闭的实体包含一组 描述资源当前如何驻留在服务器上的说明 应修改源服务器以生成新版本。补丁 方法影响由请求URI标识的资源,并且 可能对其他资源产生副作用;i、 例如,可能需要新的资源 通过应用修补程序创建或修改的现有修补程序


您可以找到一个类似的问题。

在您的情况下,
accessLogs
是一个生成的只读属性,因此它不必是PUT请求的一部分。您也不发送
\u id
属性,如果某些属性具有默认值,您也不必发送这些属性

PUT方法要求将封闭的实体存储在 提供的请求URI。如果请求URI引用已存在的 资源,则应将封闭的实体视为已修改的实体 位于源服务器上的版本

PUT和修补程序请求之间的差异反映在 服务器处理封闭实体以修改资源的方式 由请求URI标识。在PUT请求中,包含的实体 被视为存储在上的资源的修改版本 源服务器,并且客户端正在请求保存存储的版本 替换。但是,对于PATCH,封闭的实体包含一组 描述资源当前如何驻留在服务器上的说明 应修改源服务器以生成新版本。补丁 方法影响由请求URI标识的资源,并且 可能对其他资源产生副作用;i、 例如,可能需要新的资源 通过应用修补程序创建或修改的现有修补程序

你可以找到一个类似的问题