javascript - best - nodejs mongodb versions




Überwachung von Mongo auf Änderungen mit Node.js (3)

Die Frage ist, ob alle Daten über die App node.js zu Ihrer Datenbank hinzugefügt werden. Wenn dies der Fall ist, können Sie die EventEmitter-Klasse von node.js verwenden, um ein Ereignis auszulösen ( http://nodejs.org/api.html#eventemitter-14 ).

Wenn die Datenbank von einer anderen App gefüllt wird, werden die Dinge schwierig. In diesem Fall benötigen Sie einen Datenbank-Trigger, der in MongoDB noch nicht verfügbar ist.

Pushing Events an den Client (auch bekannt als Comet) wird möglich sein, sobald die HTML5-WebSockets-API ihren Weg in alle gängigen Browser findet.

In der Zwischenzeit können Sie nur versuchen, dieses Verhalten mit Techniken wie (Langzeit-) AJAX-Polling, für immer Frame usw. zu emulieren, aber jeder von ihnen hat seine Schwächen.

Ich benutze Node.js für einige Projektarbeiten und ich möchte meine Mongo-Datenbank (Sammlung) auf Änderungen überwachen, im Grunde ein Ereignis auslösen, wenn etwas hinzugefügt wird.

Wer weiß, ob das möglich ist? Ich benutze die node-mongodb-native Treiber.

Wenn es nicht ist, würde ich auch irgendwelche verfügbaren Zeiger auf das Schieben von Daten vom Bediener (laufen mit node ) zum Klientenbrowser mögen.


Fast 3 Jahre seit der letzten Antwort. Ich würde vorschlagen, zu betrachten:

npm install mubsub sollte dich dorthin bringen


collection.insert ({"Schlüssel1": val1, "Schlüssel2": "val2"}, Funktion (err, info) {
if (err) {// handle das} else {if (info) {

Sie rufen eine Feuer-und-Vergessen-Funktion auf (Info); Hier kann man in Logs schreiben oder an SQS senden oder ein anderes Child-Spawn oder eine andere Sache machen. Dies könnte sogar ein Rückruf sein, aber ich denke, dass ein Feuer und Vergessen in den meisten Fällen möglich ist. Ich sage Feuer und vergesse, weil ich annehme, dass du die Antwort nicht halten musst, damit du dem Klienten alles zurückgeben kannst, was immer du brauchst. Und zum Teil-Antwort auf Ihre andere Frage können Sie JSON so zurückgeben

         db.close();
         var myJSON =[];                            
         sys.puts("Cool info stored and did a non blocking fire and forget for some other mongo monitoring stuff/process and sending control back to the browser");
         sys.puts(sys.inspect(info));//remove later
         myJSON.push({"status":"success"});                     
         myJSON.push({"key1":val1,"key2":val2});//or whatev you want to send
         res.writeHead(200, { "Content-Type" : "text/plain" });
         res.write(JSON.stringify(myJSON));
         res.end();
        }
    }




database