Добавить временную метку при добавлении документа в 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']; }" } } Я вызываю ее, отправляя обычный документ по адресу: https://$host/$database/_design/update_handlers/_update/add_with_timestamp. Она также по-прежнему работает с учетной записью, у которой есть только права на запись. - person bsmulders; 11.06.2017