Я планирую создать маршрут, где пользователь может добавить другого пользователя в качестве своего друга, чтобы они могли общаться друг с другом, когда они друзья.
Итак, как только пользователь 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 - единственное место, где я могу найти ключ к тому, как что-то сделать.
Спасибо.