Restheart 会为文档添加返回空响应(使用PUT或POST方法)。
是否可以修改配置,以便返回有效的json响应:
比如{}
?
有没有办法让restheart返回插入文档的id或objectId?
版本:
答案 0 :(得分: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,该文件实际上以MongoDB生成的对象ID结尾。如果你改为使用PUT动词,那么你就是自己提供id。
答案 1 :(得分:0)
谢谢mturatti!
对我来说太糟糕了。 我正在使用RESTAdapter,我可以在EmberJS应用程序中自定义。
RESTAdapter仍在等待JSON响应:我通过将Ajax查询的dataType从“JSON”更改为“*”来找到解决方案。
但缺少以JSON格式返回的id更成问题。
我必须找到一种方法来生成JSON响应,方法是包含从Location头检索的插入对象的id
标题中的那个,
Location: http://dbapi.io/db/coll/5a6762eb74efb71411471489
我想回复一下身体:
{"_id":"5a6762eb74efb71411471489"}
在等待找到解决方案时, 我使用ember addon生成客户端uuid,它解决了问题
但遗憾的是不使用mongo生成的id, 插入对象的id不是元数据