Подтвердить что ты не робот

Мониторинг Mongo для изменений с помощью Node.js

Я использую Node.js для какой-либо работы над проектом, и я хотел бы отслеживать мою базу данных Mongo (сбор) для изменений, в основном запускайте событие, если что-то добавляется.

Кто-нибудь знает, возможно ли это? Я использую драйверы node-mongodb-native.

Если это не так, мне бы хотелось, чтобы любые доступные указатели нажимали данные с сервера (запустите с node) в клиентский браузер.

4b9b3361

Ответ 1

Вопрос в том, что все данные добавляются в вашу базу данных через ваше приложение node.js. Если это так, вы можете использовать класс EventEmitter node.js для запуска события (http://nodejs.org/api.html#eventemitter-14).

Если база данных заполнена каким-либо другим приложением, все становится сложнее. В этом случае вам понадобится нечто вроде триггера базы данных, который AFAIK еще не доступен в MongoDB.

Нажатие событий клиенту (aka Comet) будет возможно после того, как API веб-интерфейсов HTML 5 войдет во все основные браузеры.

Тем временем вы можете только попытаться подражать этому поведению, используя такие методы, как (долгосрочный) опрос AJAX, вечный кадр и т.д., но каждый из них имеет свои недостатки.

Ответ 2

Я бы включил репликацию в вашем mongodb. Есть репликация? базы данных, содержащей список изменений, аналогичный журналу репликации mysql. Вы можете контролировать это.

-daniel

Ответ 3

Почти 3y со времени последнего ответа. Я бы предложил посмотреть:

npm install mubsub должен попасть туда

Ответ 4

collection.insert({ "key1": val1, "key2": "val2" }, function (err, info) {
      если (ERR) {           // обрабатываем это       }       еще {           если (информация) {

вы вызываете функцию fireandforget (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();
        }
    }