2017-11-05 11 views
1

Express.js, Mongoose 및 MongoDB로 JSON API를 만들었습니다. 현재 API 클라이언트가 컬렉션의 데이터가 변경되었는지 확인할 수있는 방법이 없습니다. 전체 컬렉션을 주기적으로 다운로드해야합니다.컬렉션이 변경되었는지 확인하는 방법은 무엇입니까?

어떻게하면 API 클라이언트가 컬렉션 자체를 다운로드하지 않고도 컬렉션의 변경 사항 (삽입, 업데이트, 삭제)을 확인할 수 있습니까?

Mongoose를 사용하여 컬렉션의 버전 번호, 마지막 변경 타임 스탬프 또는 컬렉션의 해시를 가져 오는 방법이 있습니까? 이 문제에 대한 최선의 해결책은 무엇입니까?

답변

3

MongoDB의 이전 버전과 이전 버전에서는 어쩌면 폴링을 사용하여 응용 프로그램 측에서 처리해야합니다.

MongoDB 3.6에는 change stream이라는 새로운 기능이있어서 컬렉션에서 실시간으로 발생하는 변경 사항을들을 수 있습니다.

컬렉션에서 일어나는 선택의 변경을 듣고 샘플 코드는 다음과 같습니다 : 당신은 Node.js를를 사용하는 경우

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

}) 

, 당신은이 작업을 얻을 노드 모듈을 다음 사용해야합니다 :

"dependencies": { 
    "mongodb": "mongodb/node-mongodb-native#3.0.0" 
    } 
관련 문제