Вернуть _rev и _id в функцию CouchDB _update? - PullRequest
7 голосов
/ 12 июля 2011

Есть ли способ вернуть клиенту вновь созданные поля _rev и _id из функции _update?

1 Ответ

8 голосов
/ 12 июля 2011

Можно, однако решение не идеальное.

Вы уже знаете документ _id в функции обновления. Либо вы сами его вычисляете, либо используете пользовательский ввод, либо, если вы хотите, чтобы CouchDB автоматически генерировал идентификатор, используйте значение req.uuid.

function(doc, req) {
    // An example _update function.
    var id;

    id = "Whatever";   // Pick one yourself, or...
    id = req.query.id; // Let the user specify via ?id=whatever, or...
    id = req.body;     // Let the user specify via POST or PUT body, or...
    id = req.uuid;     // Use a random UUID from CouchDB

    var doc = {"_id":id, "other_stuff":"Whatever other data you have"};
    log("Document _id will be: " + doc._id);
    return([doc, {json: {"success":true, "doc":doc}]);
}

К сожалению, вы не знаете _rev в функции показа. Однако CouchDB отправит его клиенту в заголовке HTTP X-Couch-Update-NewRev.

Например:

HTTP/1.1 201 Created
X-Couch-Update-NewRev: 1-967a00dff5e02add41819138abb3284d
Server: CouchDB/1.1.0 (Erlang OTP/R14B03)
Date: Tue, 12 Jul 2011 06:09:34 GMT
Content-Type: application/json
Content-Length: 14

{"stuff":true}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...