Как узнать, что текущий пользователь следует списку пользователей? - PullRequest
0 голосов
/ 04 мая 2020

Я сделал простую следующую систему, основанную на модели, которую я нашел в inte rnet.

follower: {
    type: mongoose.Schema.Types.ObjectId, ref: 'User',
    required: true,
},
followee: {
    type: mongoose.Schema.Types.ObjectId, ref: 'User',
    required: true,
},
start: {type: Date},

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

exports.check = (req, res, next) => {
   Follow.findOne({
     follower: req.userData.userId,
     followee: req.params.id,
   }).then((follow) => {
     if (follow) {
      res.status(200).json(true);
     } else {
       res.status(200).json(false);
     }
  });
};

Поскольку я не хочу загружать подписчиков / подписчиков пользователя ни за что, я добавил последователиCount и followCount в моей модели User, которую я увеличиваю каждый раз, когда пользователь подписывается / отписывается от кого-либо еще с помощью перехвата сообщений.

followSchema.post('save', function(doc){
User.findByIdAndUpdate({_id: this.follower}, {$inc : {'followingsCount' : 1}})
.then(
    () => {
        User.findByIdAndUpdate({_id: this.followee},  {$inc : {'followersCount' : 1}})
        .then(
            () => {
                console.log('ok');
            }
        )
    }
)

followSchema.post('findOneAndDelete', function(doc){
 User.findByIdAndUpdate({_id: doc.follower}, {$inc : {'followingsCount' : -1}})
.then(
    () => {
        User.findByIdAndUpdate({_id: doc.followee},  {$inc : {'followersCount' : -1}})
        .then(
            () => {
                console.log('ok');
            }
        )
    }
)

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

Я сделал эти счетчики, потому что я хочу показать количество подписчиков / подписчиков в профиле пользователя (например, Twitter). Кто-нибудь есть идеи о том, как я могу знать это, не требуя полей в моей модели пользователя?

А теперь для моей основной проблемы: я хочу показать список подписчиков / подписчиков в профиле пользователя, но я также хочу знать, уже зарегистрированный пользователь уже подписан на этих пользователей. Как я могу сделать это за один звонок? Потому что я думаю, что выборка пользователя один за другим и вызов моей функции проверки - плохая идея.

Может быть, я не в порядке

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