node-etcd3
a node client for the new etcd v3 grpc API
WIP: this client is work in Progress. Braking changes are avoided if possible, but may happen until the first stable version is reached
- supports node 0.12, 4-6
- easy to use
- Promise based
- offers sync methods
- Docs: go here
- may be broken/outdated until typedoc can handle typescript v2 (currently update v0.4.1, yay)
- Changelog: go here
const Etcd = ;const etcd = ; etcdetcd
Roadmap
working:
- KV - get
- KV - range
- KV - set
- KV - delete
- Lease - grant
- Lease - keep alive
todo for v1:
- Lease - revoke
- watch - watch
- KV - compact
todo for later:
- KV - txn
- cluster
- maintenance
- auth
Intro & Examples
- all methods return a Promise
- most methods also come in a sync-flavor, like
getSync
forget
- these are handy for setting up things on application start
get() and set() with Promises
etcd
getSync()
const mainDB = server: etcd user: etcd password: etcd;
how to store a Object, Buffer, number, ... ?
etcd stores binary data (actually even the keys a buffers). But for ease of use node-etcd3 works with string most of the time. But you can still
easily store a Buffer to etcd, just pass it into set()
.
- a NodeJS
Buffer
will be stored it as-is. string
s also get stored as-is.number
s will be stored as string.- any other object is put in
JSON.stringify
and stored as string
see below to see how to get a Buffer (or ...) out again
get & range return type
- get offers multiple ways to return the data
value
(default): returns a stringjson
: parses the value and return the parsed objectbuffer
: returns a NodeJSBuffer
containing the valueraw
: an object containing detailed information, such as theversion
orlease
- they work for
get()
andrange()
etcd;etcd;
leases
- leases are basically etcd3 way of doing TTL for keys, but they work great for multiple keys at once
- node-etcd3 has 3 main ways for working with leases
- use the client lease
the client has one managed lease, use"client"
as lease ID then callingset()
. It is kept alive automatically and you don't have a hand around the lease ID yourself.
etcd.set("my/key", "hello leases!", "client")
- use leases
you can also get your own lease using theleaseGrant()
method.
let myVeryOwnLease = etcd.leaseGrant()
- simply set a TTL
you can pass in a number as lease to create a new lease with the TTL and use it for the key.
etcd.set("ttl/key", "expire after 100s", 100);