2017-11-05 20 views
1

私は、Express.js、Mongoose、およびMongoDBでJSON APIを作成しました。現在、APIのクライアントがコレクション内のデータが変更されたかどうかを確認する方法はありません。コレクション全体を定期的にダウンロードする必要があります。コレクションが変更されているかどうかを確認する方法?

コレクションのダウンロードを行わずに、APIのクライアントがコレクションの変更(挿入、更新、削除)を確認できるようにするにはどうすればよいですか?

Mongooseでコレクションのバージョン番号、最終変更タイムスタンプ、またはコレクションのハッシュを取得する方法はありますか?この問題のベストプラクティスの解決策は何ですか?

答えて

3

MongoDBの以前のバージョンでは、アプリケーション側で多分ポーリングを使用しなければなりません。

MongoDB 3.6には、change streamという新しい機能があり、コレクションで発生した変更をリアルタイムで聴くことができます。

あなたのコレクションに起こって選択した変更を聞くためのサンプルコードは以下の通りです:

var MongoClient = require('mongodb').MongoClient 
, assert = require('assert'); 
MongoClient.connect("mongodb://172.16.0.110:27017/myproject?readConcern=majority").then(function(client){ 
    var db = client.db('myproject') 
    var changeStreams = db.collection('documents').watch() 
    changeStreams.on('change', function(change){ 
    console.log(change) 
    }) 

}) 

あなたはNode.jsのを使用している場合、あなたはそれが動作を取得するには、以下のノードモジュールを使用する必要があります。

"dependencies": { 
    "mongodb": "mongodb/node-mongodb-native#3.0.0" 
    } 
関連する問題