2017-06-11 2 views
0

Ich möchte jedem Dokument, das Cloudant/CouchDB hinzugefügt wurde, einen Zeitstempel hinzufügen. Mein Client ist ein Low-Power-IoT-Gerät, das die aktuelle Zeit nicht kennt (NTP-Betrieb kostet zu viel Strom).Zeitstempel beim Hinzufügen eines Dokuments zu Cloudant/CouchDB hinzufügen

Von dem, was ich gelesen habe kann ich ein Design-Dokument für diese verwenden, aber der Client muss dies manuell nach dem Einfügen des Dokuments auslösen. Dies wird für den Client zu energieintensiv sein, da es zwei HTTP-Anfragen statt einer Anfrage ausführen muss.

Gibt es eine Möglichkeit, dies zu erleichtern?

Antwort

2

Das Erstellen eines Entwurfsdokuments ist die beste Lösung in Ihrem Fall.

Sie müssen eine Update-Funktion definieren (siehe this) für die vollständige Dokumentation.

In dieser Update-Funktion können Sie das an diese Funktion übergebene Dokument ändern, um einen Zeitstempel als _id festzulegen.

Sie müssen das Dokument vor dem Aufruf dieses Update-Handlers nicht erstellen. Sie können einfach eine Anfrage mit dem Dokument im Anfragetext senden.

+1

Danke, ich habe falsch über die Design-Dokumente nachgedacht. Meine aktuelle Update-Funktion: '{ "_id": "_Design/update_handlers", "Updates": { "add_with_timestamp":„Funktion (doc, req) {var Messung = JSON.parse (erf. body); measurement._id = new Datum(); return [measurement, 'created'];} " }' Ich rufe es an, indem ich ein reguläres Dokument an: https: // $ host/$ database/_design/update_handlers/_update/add_with_timestamp Es funktioniert auch noch auf einem Konto, das nur Schreibrechte hat. – bsmulders

Verwandte Themen