Запрос jQuery CouchDB возвращает «создан», но документ не добавлен в базу данных - PullRequest
0 голосов
/ 21 марта 2012

Я использую jquery.couch.js для записи документа на мою CouchDB. Я позаботился о разборе данных JSON и подготовке запроса. Когда мой сценарий фактически отправляет команду $.couch.db.saveDoc(), я получаю код ответа 201 Created для моего запроса post, который также включает следующее:

{"ok":true,"id":"...","rev":"..."}

(где "..." - фактический UUID)

Но когда я проверяю свою CouchDB впоследствии, документ не был создан.

Я сталкивался с этим раньше, но всегда получаю разрешение другим способом. По сути, создается впечатление, что кушетка возвращает "ok":true независимо от того, создан ли документ. Что меня действительно привлекает, так это то, что он на самом деле возвращает сгенерированный UUID (что означает, что запрос действительно достиг моей CouchDB, если я не ошибаюсь). Поэтому я не могу понять, почему документ не написан.

Кто-нибудь сталкивался с этой проблемой раньше?

1 Ответ

2 голосов
/ 21 марта 2012

Несколько вещей, на которые стоит обратить внимание ...

  • CouchDB вернет значение 201, созданное только тогда, когда документ был успешно fsync'd. Вот почему CouchDB более долговечен, чем другие базы данных, такие как MongoDB. Таким образом, ваши данные абсолютно на диске.
  • И когда я говорю «абсолютно на диске», я имею в виду «только если в вашей конфигурации для delayed_commits установлено значение false».
  • Как вы подтверждаете, что документ создан? Вы пытаетесь получить документ по его URL (/database/docID) или из представления? Если это из вида, то ваш индекс еще не может быть обновлен.
...