Добавете клеймо за време, когато добавяте документ към Cloudant / CouchDB

Искам да добавя времево клеймо към всеки документ, добавен към Cloudant / CouchDB. Моят клиент е IoT устройство с ниска мощност, което не знае текущия час (операцията на NTP струва твърде много енергия).

От това, което прочетох, мога да използвам проектен документ за това, но клиентът трябва да задейства това ръчно, след като вмъкне документа. Това ще бъде твърде енергоемко за клиента, тъй като трябва да направи две HTTP заявки вместо една.

Има ли някакъв начин да се улесни това?


person bsmulders    schedule 11.06.2017    source източник


Отговори (1)


Създаването на проектен документ е най-доброто решение във вашия случай.

Трябва да дефинирате функция за актуализиране (вижте това) за пълна документация.

В тази функция за актуализиране ще можете да модифицирате документа, предаден на тази функция, за да зададете клеймо за време като негов _id.

Не е необходимо да създавате документа, преди да извикате този манипулатор на актуализация. Можете просто да изпратите заявка с документа в тялото на заявката.

person Alexis Côté    schedule 11.06.2017
comment
Благодаря, мислех неправилно за проектните документи. Моята текуща функция за актуализиране: { "_id": "_design/update_handlers", "updates": { "add_with_timestamp": "function (doc, req) { var measurement = JSON.parse(req.body); measurement._id = new Date(); return [measurement, 'created']; }" } } Извиквам я, като публикувам POST обикновен документ на: https://$host/$database/_design/update_handlers/_update/add_with_timestamp Тя също така все още работи на акаунт, който има само права за запис. - person bsmulders; 11.06.2017