Внедрение системы отслеживания с мангустом без огромных ошибок - PullRequest
0 голосов
/ 04 ноября 2018

Мне было интересно, каков наилучший подход, позволяющий пользователям моего приложения следить за другими пользователями и следовать им. В настоящее время у меня есть две отдельные коллекции для хранения данных каждого пользователя: модель пользователя (где в основном я храню только информация, необходимая для аутентификации) и модель профиля пользователя. В каждом документе модели профиля есть два массива: первый содержит все идентификаторы людей, следующих за этим пользователем, а второй - список людей, за которыми он следует.

ProfileSchema = new Schema({

  owner: { type: Schema.Types.ObjectId, ref: "User" },


  followers: { type: [Schema.Types.ObjectId], default: [] },

  following: { type: [Schema.Types.ObjectId], default: [] },

  created_at: {
    type: Date,
    default: Date.now
  }
});

Сначала я подумал, что это правильный подход, я должен сохранить всех подписчиков в отдельных коллекциях. Но моя настоящая проблема заключается в том, что я не знаю, как настроить функцию, которая обрабатывает последующие и последующие функции. Например, я мог бы настроить функцию, которая просто выполняет два прохода:

  1. в первую очередь идет добавить пользователя в список подписчиков пользователя, который хочет подписаться
  2. последовательно добавляет пользователя в список людей, которые следуют за пользователем, сделавшим запрос.

Проблема в том, что если функция выполняет первый проход, но затем не завершает второй из-за ошибки или сбоя базы данных, у меня будет пользователь с огромной проблемой, почти неразрешимой, если вы не перейдете к редактировать непосредственно документ, который в приложении тысяч пользователей невозможно. Таким образом, пользователь, затронутый этой ошибкой, может оказаться за человеком «А», но «А» не увидит, что он следует за ним

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...