【问题标题】:restheart empty response when adding添加时restheart空响应
【发布时间】:2018-01-22 22:38:48
【问题描述】:

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

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

比如{}

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

版本:

  • restheart 3.0.0
  • mongoDb 3.4.1

【问题讨论】:

    标签: json restheart


    【解决方案1】:

    谢谢mturatti!

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

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

    但是没有返回JSON格式的id问题更大。

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

    从标题中,

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

    我想要回复正文:

    {"_id":"5a6762eb74efb71411471489"}
    

    在等待找到解决方案时, 我用ember addon生成客户端uuid,解决了问题

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

    【讨论】:

      【解决方案2】:

      不,没有这样的配置。根据 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,它实际上以 MongoDB 生成的对象 id 结尾。如果您改为使用 PUT 动词,那么您将自己提供 id。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-24
        • 2021-07-03
        • 1970-01-01
        • 1970-01-01
        • 2020-08-29
        • 1970-01-01
        相关资源
        最近更新 更多