Я планирую создать маршрут, где пользователь может добавить другого пользователя в качестве своего друга, чтобы они могли общаться друг с другом, когда они друзья.
Итак, как только пользователь A отправил запрос пользователю B, Пользователь B получит живое уведомление о запросе через socket.io
Проблема в том, что я не мог придумать свое решение о том, как реализовать описанный выше сценарий, из того, что я знаю, я должен создать два маршрута GET и POST
Я использую mongoose для запроса базы данных, вставки, обновления и удаления
Здесь мой код
// GET route for getting the user information -- Simple route
router.get('/users/:facebook_name', function(req, res) {
  User.findOne(facebook_name, function(err, user) {
    if (!user) {
      res.json({message: "Couldn't find a user by that name"});
      return;
    } 
    res.json(user);
  });
});
// POST route for adding a friend 
router.post('/friendships/create/:facebook_name', ensureAuthenticated, function(req, res) {
  // What should i put in this route to make the adding a friend feature works?
  User.findOneAndUpdate(facebook_name, function(err, user) {  
    if (user) {
      res.json({message: "You already send a friend request to that person"});
      return;
    } 
    // Send a live notification to the other user
    socket.emit('sending request', {message: "added you as a friend"});
  }); 
});
user Код схемы - не совсем уверен в этом.
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserSchema = new Schema({
  friends: [{ type: Schema.Types.ObjectId, ref: 'User'}],
  facebook: {
    id: String,
    token: String,
    // email: String,
    displayName: String,
    photo: String
  }
});
// Should I even create this schema?
var FriendsRequest = new Schema({
  madeBy: [{ type: Schema.Types.ObjectId, ref: 'User'}],
})
module.exports = mongoose.model('User', UserSchema);
module.exports = mongoose.model('FriendsRequest', FriendsRequest);
Я не совсем честен с вами, ребята, в маршруте POST, у меня нет лишней идеи о том, как писать логику, потому что я действительно запутался прямо сейчас, как пользователь B получит живой запрос уведомление? Должен ли я создать для этого еще один маршрут?
Это моя проблема, когда дело доходит до создания немного сложных приложений, я просто не мог придумать хорошую логику о том, как сделать определенную функцию, даже если она выглядит довольно легко. Я застрял в этой проблеме почти 4 часа, просматривая и читая сеть, но я считаю, что SO - единственное место, где я могу найти ключ к тому, как что-то сделать.
Спасибо.
