Database Reference
In-Depth Information
}
var
output = JSON.parse(buffer);
if
(output.results) {
watcher.last
_
seq = output.last
_
seq;
output.results.forEach(
function
(change){
watcher.emit(
'change'
, change);
});
watcher.start();
}
else
{
watcher.emit(
'error'
, output);
}
})
})
.on(
'error'
,
function
(err) {
watcher.emit(
'error'
, err);
});
{
Als Vorbereitung auf den Request richtet das Skript zuerst ein
http
_
options
-Konfigurationsobjekt ein. Der
path
verweist auf die gleiche
_
changes
-URL, die wir bereits genutzt haben.
feed
wird auf
longpoll
ge-
setzt und
include
_
docs=true
.
|
Danach ruft das Skript
http.get()
auf, eine Methode der Node.js-Biblio-
thek, die einen
GET
-Request entsprechend unserer Einstellungen durch-
führt. Der zweite Parameter an
http.get
ist ein Callback, der die
HTTPResponse
empfängt. Das Response-Objekte sendet
data
-Events, wäh-
rend der Inhalt verarbeitet wird, die wir in den
buffer
einfügen.
}
Wenn das Response-Objekt ein
end
-Event sendet, verarbeiten wir den Puf-
fer (der JSON enthalten sollte). Dem entnehmen wir den neuen
last
_
seq
-
Wert, senden ein
change
-Event und rufen
watcher.start()
erneut auf,
um auf die nächste Änderung zu warten.
Um das Skript im Kommandozeilen-Modus auszuführen, starten Sie es wie
folgt (die Ausgabe haben wir gekürzt):
$
node watch
_
changes
_
longpolling.js music
{ seq: 1,
id: '370255',
changes: [ { rev: '1-a7b7cc38d4130f0a5f3eae5d2c963d85' } ],
doc:
{
_
id: '370255',
_
rev: '1-a7b7cc38d4130f0a5f3eae5d2c963d85',
albums: [ [Object] ],
id: '370255',
name: '""ATTIC""',
url: 'http://www.jamendo.com/artist/ATTIC
_
(3)',
mbgid: '',
random: 0.4121620435325435 } }
{ seq: 2,
id: '370254',
changes: [ { rev: '1-2c7e0deec3ffca959ba0169b0e8bfcef' } ],