Изменить ответ ChangeStream в петле 3 - PullRequest
0 голосов
/ 17 января 2019

Прежде всего, если вы не знакомы с потоками изменений, прочитайте это .

При использовании lb создается впечатление, что для моделей автоматически создается конечная точка потока изменений.Я уже успешно реализовал поток изменений, в котором при отправке нового экземпляра модели в мою модель Statement изменения отправляются всем подключенным клиентам в режиме реального времени.Это прекрасно работает.

За исключением того, что отправляет только modelInstance модели Statement.Мне нужно немного узнать и о пользователе, который подал заявление.Поскольку Statement имеет отношение hasOne к моей пользовательской модели, я обычно делаю запрос с фильтром includes.Но я не делаю запрос здесь ... это не так, как работают потоки изменений.Сервер узла отправляет информацию клиенту без какого-либо запроса на отправку этой информации первым.

Мой вопрос заключается в том, как я могу подключить исходящий поток изменений в модели Statement, чтобы я мог получить необходимые данные изпользовательский модуль?Что-то вроде:

module.exports = function(Statement) {

  Statement.hookChangeStream(function(ctx, statementInstance, cb) {
    const myUser = Statement.app.models.myUser
    myUser.findOne({ 'where': { 'id': statementInstance.userId } }, function(err, userInstance) {
      if (err !== undefined && err !== null) cb(err, null);

      // strip sensitive data from user model
      cleanUserInstance = someCleanerFunc(userInstance);

      // add cleaned myUser modelInstance to Statement modelInstance
      statementInstance.user = cleanUserInstance;
      cb(null, true);
    }
  });

}

Можно ли это сделать?Если да, то как?

...