【发布时间】:2015-09-01 11:33:43
【问题描述】:
我打算创建一个用户可以添加另一个用户作为他/她的朋友的路线,这样他们一旦成为朋友就可以互相聊天。
所以基本上一旦用户 A 向用户 B 发送请求,用户 B 将通过socket.io 收到有关该请求的实时通知
现在的问题是,我无法想出自己的解决方案来实现上述场景,据我所知,我应该创建两条路由GET 和POST
我正在使用 mongoose 进行数据库查询、插入、更新和删除
这是我的代码
// GET route for getting the user's 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"});
});
});
用户架构代码 -- 也不确定这个
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 是我唯一能找到如何做某事的线索的地方。
谢谢。
【问题讨论】:
标签: node.js express mongoose socket.io