forked from tjaskula/Coursera
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathuser.js
More file actions
91 lines (84 loc) · 2.49 KB
/
user.js
File metadata and controls
91 lines (84 loc) · 2.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
const express = require('express')
const router = express.Router()
const mongoose = require('mongoose')
const requiredLogin=require("../middlewares/requirelogin")
const Post = mongoose.model("Post")
const User = mongoose.model("User")
router.get('/user/:id',requiredLogin,(req,res)=>{
User.findOne({_id:req.params.id})
.select("-password")
.then(user=>{
Post.find({postedBy:req.params.id})
.populate("postedBy","_id name")
.exec((err,post)=>{
if(err){
return res.status(422).json({error:err})
}
res.json({user,post})
})
})
.catch(err=>{
return res.status(404).json({error:"User not found"})
})
})
router.put('/follow',requiredLogin,(req,res)=>{
User.findByIdAndUpdate(req.body.followId,{
$push:{followers:req.user._id},
},{
new:true
},(err,result)=>{
if(err){
return res.status(422).json({error:err})
}
User.findByIdAndUpdate(req.user._id,{
$push:{following:req.body.followId}
},{
new:true
}).select("-password").then(result=>{
res.json(result)
}).catch(err=>{
return res.status(422).json({error:err})
})
}
)
})
router.put('/unfollow',requiredLogin,(req,res)=>{
User.findByIdAndUpdate(req.body.unfollowId,{
$pull:{followers:req.user._id},
},{
new:true
},(err,result)=>{
if(err){
return res.status(422).json({error:err})
}
User.findByIdAndUpdate(req.user._id,{
$pull:{following:req.body.unfollowId}
},{
new:true
}).select("-password").then(result=>{
res.json(result)
}).catch(err=>{
return res.status(422).json({error:err})
})
}
)
})
router.put('/updatepic',requiredLogin,(req,res)=>{
User.findByIdAndUpdate(req.user._id,{$set:{pic:req.body.pic}},{new:true},(err,result)=>{
if(err) return res.status(422).json({error:"pic cannot post"})
res.json(result)
})
})
router.put('/search-users',(req,res)=>{
let userPattern = new RegExp("^"+req.body.query)
if(req.body.query==="") return res.json({});
User.find({name:{$regex:userPattern}})
.select("_id name pic")
.then(user=>{
res.json({user})
})
.catch(err=>{
console.log(err)
})
})
module.exports = router