Крюки Meteor Collection не работают для внешних модификаций БД
У меня есть куча датчиков, разбросанных вокруг.
Эти датчики передают свое состояние всякий раз, когда обнаруживают изменения в окружающей среде.
Данные отправляются на сервер (созданный с использованием Java), где он обрабатывает эту информацию, а затем вставляет ее в mongoDB.
Мое приложение Meteor - это, по сути, информационная панель для этой информации. Я хотел бы выполнить дальнейшую обработку этих записей, как только они появятся (аналитика).
Я начал использовать Collection-Hooks, который очень хорошо работает, когда приложение Meteor вносит изменения в базу данных, но не когда это делает Mongo Java-Driver.
Мне нужны ловушки для сбора новых документов, добавленных в мой mongoDB из Java-драйвера. Я также не женат на крючках для сбора, любые другие предлагаемые услуги приветствуются.
1 ответ
То, что вы хотите использовать, - это наблюдатель на курсоре, возвращаемом из запроса: https://docs.meteor.com/api/collections.html
myCollection.find().observe({
added(document) {
// Do something with new document
},
changed(document) {
// Update analytics in response to change
},
removed(oldDocument) {
// Update analytics in response to change
}
});
Это будет зависеть от содержимого фактической базы данных, в отличие от хуков сбора, которые работают только при вызове кода Meteor
Также стоит отметить, что эти хуки также отслеживают конкретный запрос, который был передан find()
, Поэтому, если вы хотите вызывать эти ловушки только для определенного подмножества данных, передайте запрос, подобный этому, в этом примере из @scriptkid:
var date = moment().utc().format("YYYY-MM-DD HH:mm:ss.SSS");
log.find({ createdAt: { $gte: date } }).observe({
added(document) {
console.log("new document added!");
},
});