Как сохранить обновленный документ CouchDB с помощью Evently?

Я следую руководству IBM по CouchDB и запустил возникла проблема с сохранением отредактированных документов. Сохранение нового документа работает нормально, и похоже, что все значения моего существующего документа (полученные через openDoc function) допустимы, но новые значения просто не принимают.

Когда я прослеживаю исполняемый код, похоже, что новые значения есть:

введите здесь описание изображения

Однако после того, как saveDoc успешно возвращает (странно!), документ не обновляется. Если я регистрирую обновленный документ, зарегистрированный объект не имеет значений _id или _rev, хотя вы можете ясно видеть, что они присутствовали при сохранении (см. Первый снимок экрана).

введите здесь описание изображения

Есть ли какой-то нюанс saveDoc или, возможно, Evently, который я не понимаю?


person Matt Norris    schedule 09.03.2012    source источник


Ответы (1)


В вашем обратном вызове success вы не регистрируете обновленный документ, вы регистрируете объект newdoc из строки 87 (за вычетом того, что он прошел через функцию saveDoc, которая явно не определила _id и _rev, но это нормально).

Обратный вызов success может иметь аргумент, являющийся ответом сервера. Если вы пишете:

success: function(data) {
    console.log(data);
}

вы должны увидеть в ответе новый _rev, начинающийся с 2-.

Если вы действительно хотите просмотреть полный документ после обновления, просто вызовите openDoc из обратного вызова success, чтобы получить обновленную версию.


Другая деталь, когда вы говорите

saveDoc успешно возвращается

Я думаю, вы имели в виду, что обратный вызов success вызывается, потому что saveDoc является асинхронным и в любом случае должен возвращаться мгновенно.

person Simon    schedule 10.03.2012
comment
Странно то, что я вернулся к этому без каких-либо изменений кода, и теперь это работает. Может быть, это была проблема с кэшированием - кто знает? Спасибо за отличные советы, особенно асинхронный бит. Это сэкономит мне массу времени позже! - person Matt Norris; 12.03.2012