ПОЛУЧЕНИЕ документа в обработчике обновления документа
Можно ли запросить (GET) документ из обработчика обновления документа в CouchDB?
Я написал простой обработчик обновления документа в CouchDB 2.0, чтобы принимать POST от третьей стороны (CognitoForms). Это прекрасно работает, и я беру идентификатор из их полезной нагрузки JSON и использую его как doc _id.
Затем вы можете указать URI "update" в CognitoForms, чтобы я мог создать новый обработчик обновлений или использовать тот же. Однако в CognitoForms:
- Обновление делает POST, а не PUT
- Похоже, что нет способа отправить какие-либо параметры запроса
Поскольку идентификатор документа, который необходимо обновить, находится внутри тела, я мог бы использовать его для запроса документа в базе данных, получения _rev и возврата полезной нагрузки с _id и _rev для выполнения обновления. Однако я просто не знаю, смогу ли я сделать такой запрос в обработчике обновлений. Мне кажется, что я либо упускаю что-то очевидное, либо есть очень веская причина, по которой мне не позволено это делать.
Спасибо большое
изменить: я должен добавить, что я понимаю, что я мог бы создать небольшое приложение для анализа запроса перед пересылкой на couchdb, но мне было интересно посмотреть, смогу ли я реализовать это в couchdb только для того, чтобы понять, как далеко я могу добраться без другого слоя!
1 ответ
В вашем конкретном случае это довольно сложно сделать. Обработчик обновления документа - это, по сути, чистая функция, которая получает необходимые данные и возвращает ответ, но не имеет доступа к базе данных.
Если вы добавите идентификатор документа в URL-адрес, функция обновления получает документ из базы данных в качестве параметра. Для получения дополнительной информации см. Документацию CouchDB для функций обновления.
Путь к возможному решению - использовать перезапись в CouchDB для извлечения идентификатора из тела. В CouchDB 2.0 был представлен новый способ переписывания функций.
Чтобы раздвинуть пределы, использование функции перезаписи для этого звучит весело. Но для производственного использования, вероятно, проще и удобнее создавать небольшое приложение node.js, которое анализирует тело.