Community Edition 5.0.1 build 5003, Docker deployment
$ curl -i -X PUT -H "Content-Type: application/json" http://Administrator:password@127.0.0.1:8091/buck/_design/dev_test -d @doc.json
HTTP/1.1 405 Method Not Allowed
X-XSS-Protection: 1; mode=block
X-Permitted-Cross-Domain-Policies: none
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Server: Couchbase Server
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Date: Mon, 02 Apr 2018 17:54:59 GMT
Content-Type: text/plain
Content-Length: 18
Cache-Control: no-cache,no-store,must-revalidate
Design doc file:
$ cat test.json
{
"_id" : "_design/dev_test",
"views" : {
"test" : {
"map" : "function (doc, meta) { if (doc.type == \"test\") { emit(meta.id, null); } }"
}
}
}
Can you help me to find an issue?
Thank you.
There are two issues here:
- The incorrect port 8091 is being used, the View Engine uses 8092:
curl -i -X PUT -H "Content-Type: application/json" http://Administrator:password@127.0.0.1:8092/buck/_design/dev_test -d @doc.json
Warning: Couldn't read data from file "doc.json", this makes an empty POST.
HTTP/1.1 400 Bad Request
Server: MochiWeb/1.0 (Any of you quaids got a smint?)
Date: Tue, 03 Apr 2018 12:31:13 GMT
Content-Type: text/plain;charset=utf-8
Content-Length: 88
Cache-Control: must-revalidate
{"error":"bad_request","reason":"invalid UTF-8 JSON: {{error,insufficient_data},<<>>}"}
- Even with that change the Design Document will not be created as the file is called
test.json
but the curl
is using -d @doc.json
, that is why a invalid UTF-8 JSON error is produced.
–
This should work:
curl -i -X PUT -H "Content-Type: application/json"
http://Administrator:password@127.0.0.1:8092/buck/_design/dev_test -d @test.json
Output:
HTTP/1.1 201 Created
Server: MochiWeb/1.0 (Any of you quaids got a smint?)
Location: http://127.0.0.1:8092/buck/_design/dev_test
Date: Tue, 03 Apr 2018 12:46:41 GMT
Content-Type: text/plain;charset=utf-8
Content-Length: 36
Cache-Control: must-revalidate
{"ok":true,"id":"_design/dev_test"}