簡體   English   中英

使用Node.js監視Mongo的更改

[英]Monitoring Mongo for changes with Node.js

我正在使用Node.js進行一些項目工作,我想監視我的Mongo數據庫(集合)是否有變化,基本上如果有東西被添加就會觸發一個事件。

任何人都知道這是否可行? 我正在使用node-mongodb-native驅動程序。

如果不是,我也喜歡將數據從服務器(與node一起運行)推送到客戶端瀏覽器的任何可用指針。

問題是是否所有數據都通過node.js應用程序添加到數據庫中。 如果是這樣,您可以使用node.js的EventEmitter類來觸發事件( http://nodejs.org/api.html#eventemitter-14 )。

如果數據庫由其他應用程序填充,則事情變得困難。 在這種情況下,您需要像數據庫觸發器這樣的東西,它是MongoDB中尚未提供的AFAIK。

一旦HTML 5 websockets API進入所有主流瀏覽器,就可以將事件推送到客戶端(aka Comet)。

在此期間,您只能嘗試使用諸如(長期)AJAX輪詢,永久幀等技術來模擬此行為,但每個都有其缺點。

我會在你的mongodb中打開復制。 有一個復制? 包含更改列表的數據庫,類似於mysql復制日志。 你可以監控。

-daniel

自上次回答以來差不多3年了。 我建議看看:

npm install mubsub可以幫到你

collection.insert({“key1”:val1,“key2”:“val2”},function(err,info){
if(err){//處理這個} else {if(info){

你打電話給fireandforgetfunction(info); 在這里,它可以寫入日志或發送到SQS或做一些其他孩子產卵或進行中的事情。 這甚至可能是一個回調,但我認為在大多數情況下可能會發生火災和遺忘。 我說火和忘記,因為我認為你不需要保持響應,所以你可以返回你需要的客戶端。 在部分回答您的其他問題,您可以像這樣返回JSON

         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();
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM