0

Restheart为文档添加返回一个空响应(使用 PUT 或 POST 方法)。

是否可以修改配置以使其返回有效的 json 响应:

比如说{}

有没有办法让restheart返回插入文档的id或objectId?

版本:

  • 休息之心 3.0.0
  • mongoDb 3.4.1
4

2 回答 2

0

谢谢姆图拉蒂!

对我来说太糟糕了。我正在使用可以在 EmberJS 应用程序中自定义的 RESTAdapter。

RESTAdapter 仍在等待 JSON 响应:我找到了一个解决方案,将 Ajax 查询的 dataType 从“JSON”更改为“*”。

但是没有以 JSON 格式返回的 id 就成问题了。

我必须找到一种方法来生成 JSON 响应,方法是包含从 Location 标头中检索到的插入对象的 id

从标题中,

Location: http://dbapi.io/db/coll/5a6762eb74efb71411471489

我想有回应机构:

{"_id":"5a6762eb74efb71411471489"}

在等待找到解决方案时,我使用了一个ember插件来生成客户端uuid,从而解决了问题

但是很遗憾没有使用mongo生成的id,插入对象的id不是元数据

于 2018-01-23T18:46:57.597 回答
0

不,没有这样的配置。根据 HTTP 规范,RESTHeart 通过 HTTP 标头返回 PUT 或 POST 的结果。这是有道理的,因为这些都是元数据。一般来说,HTTP 规范试图强制区分数据(通常在响应正文中)和元数据(通常在 HTTP 标头中)。

例如,以下curl命令将 JSON 文档发布到 MongoDB 集合中:

$ curl -i -H "Content-Type: application/json" -X POST http://dbapi.io/db/coll -d '{"from":"mkjsix", "message": "MongoDB rocks!"}'

HTTP/1.1 201 Created
Server: nginx/1.9.15
Date: Tue, 23 Jan 2018 16:29:31 GMT
Content-Type: application/json
Content-Length: 0
Location: http://dbapi.io/db/coll/5a6762eb74efb71411471489
Connection: keep-alive
X-Powered-By: restheart.org
Access-Control-Expose-Headers: Location, ETag, Auth-Token, Auth-Token-Valid-Until, Auth-Token-Location, X-Powered-By
Access-Control-Allow-Origin: *
ETag: 5a6762ebc9e77c0007974479
Access-Control-Allow-Credentials: true

如您所见,Location标头包含新创建文档的 URI,它实际上以对象 id 结尾,由 MongoDB 生成。如果您改为使用 PUT 动词,那么您将自己提供 id。

于 2018-01-23T16:49:26.800 回答