-
Notifications
You must be signed in to change notification settings - Fork 0
JSON Client API
The JSON API is an easy way to manipulate JSON documents. e.g:
doc.get() // => {'todo':[]}
todo = doc.at('todo')
todo.get() // => []
todo.push('take out the garbage')
doc.get() // => {'todo':['take out the garbage']}
todo.on('insert', function (pos, item) {
...
})
todo.on('child op', function (path, op) {
var item_idx = path[0]
console.log("Item "+item_idx+" now reads "+todo.get()[item_idx])
if (op.si != undefined) {
// ...
} else if (op.sd != undefined) {
// ...
}
})
-
doc.at(path...)
Returns a sub-document starting at
path
. For the document itself, usedoc.at()
.doc.at
can also accept an array as its only argument. -
subdoc.get()
Returns the snapshot at the subdocument.
-
subdoc.set(value, cb)
Sets the document at
subdoc
tovalue
. -
subdoc.insert(pos, data, cb) (Strings and lists only)
Inserts
data
atpos
in the string or list. The item atpos
(and everything after it) is pushed forward. -
subdoc.del(pos, length, cb) (Strings only)
Deletes
length
characters starting atpos
from the string. -
subdoc.remove(cb)
Removes the subdocument from the tree.
-
subdoc.push(item, cb) (Lists only)
Inserts
item
at the end of the list. -
subdoc.move(from, to, cb) (Lists only)
Causes the item at index
from
to have the indexto
. -
subdoc.add(amount, cb) (Numbers only)
Adds
amount
to the number. -
removeListener(l)
subdoc = doc.at(...) l = subdoc.on('insert', ...) subdoc.removeListener(l) // doc.removeListener(l) also works.
-
insert
subdoc.on('insert', function (position, data) { ... })
(Strings and lists) Emitted when a remote client inserts an item into the list, or inserts text into the string. Call
subdoc.get()
to get the new value. -
delete
subdoc.on('delete', function (position, data) { ... })
(Strings and lists) Emitted when a remote client removes an item from the list, or deletes text from the string.
data
contains the item or text that was removed. -
replace
subdoc.on('replace', function (position, was, now) { ... })
(Lists and objects) Emitted when a remote client replaces an element of an object or list.
position
is the index of the array or the key of the object. -
move
subdoc.on('move', function (from, to) { ... })
(Lists only) Emitted when a remote client moves an element in the list from
from
toto
. -
add
subdoc.on('add', function (amount) { ... })
(Numbers only) Emitted when a remote client adds
amount
to the number. -
child op
subdoc.on('child op', function (path, op) { ... })
Emitted when a remote operation changes any element contained in
subdoc
.path
is the path below this document, such thatsubdoc.get()[path[0]][path[1]][...][path[path.length-2]]
is the affected element, andpath[path.length-1]
is the index into that element (except forna
operations, in which case there is no index).op
is the raw operation that was applied. See JSON Operations for details.