Крюк коллекции не вызывается во втором приложении

У меня есть приложение, написанное на Meteor 1.4, и я запускаю его на порту 3000 (называемом A) и знаю, что хочу использовать базу данных приложения A в другом приложении (называемом B). В консоли B я установил MONGO_URL так:

export MONGO_URL=mongodb://localhost:3001/meteor

А затем запустите его на порту 5000. У меня есть несколько хуков сбора в приложении A, а также хуков сбора в приложении B, но хуки только в приложении A.

Например, в А мы имеем:

collections.notes.after.update(function(userId, doc, fieldNames, modifier, options) {
    console.log("notes updated in A hook");
    console.log(doc);
}

И в Б мы имеем:

collections.notes.after.update(function(userId, doc, fieldNames, modifier, options) {
    console.log("notes updated in B hook");
    console.log(doc);
}

Но это только журнал notes updated in A hook,

Как это исправить?

2 ответа

Решение

Хук сбора выполняется только в приложении, в котором было сделано изменение. Хук вашего приложения B не запускается при изменении приложения A.

Если вы хотите сделать что-то в приложении B на основе изменения данных MongoDB, то вы хотите наблюдать за этой коллекцией:

collections.notes.find().observe({
  changed(newDocument, oldDocument){
    console.log('Notes changed! Old doc: '+oldDocument+' to '+newDocument);
  }
});

Ваши крючки идентичны. Очевидно, что коллекционные хуки поддерживают только один хук на событие.

Почему вы хотите два идентичных обратных вызовов?

Другие вопросы по тегам