mirror of
https://github.com/FranP-code/open-react-blog-api.git
synced 2025-10-12 23:52:57 +00:00
User endpoint done
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -2,4 +2,4 @@ package-lock.json
|
|||||||
node_modules
|
node_modules
|
||||||
|
|
||||||
.env
|
.env
|
||||||
functions
|
firebase
|
||||||
@@ -20,6 +20,8 @@
|
|||||||
"homepage": "https://github.com/FranP-code/open-react-blog-api#readme",
|
"homepage": "https://github.com/FranP-code/open-react-blog-api#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"express": "^4.18.1",
|
"express": "^4.18.1",
|
||||||
|
"firebase-admin": "^10.2.0",
|
||||||
|
"nodemon": "^2.0.16",
|
||||||
"path": "^0.12.7"
|
"path": "^0.12.7"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
72
src/routes/user.js
Normal file
72
src/routes/user.js
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
const express = require('express')
|
||||||
|
const router = express.Router()
|
||||||
|
|
||||||
|
const admin = require("firebase-admin");
|
||||||
|
const firebaseSDK = require("../firebase/firebase.json");
|
||||||
|
const {getFirestore} = require("firebase-admin/firestore")
|
||||||
|
|
||||||
|
admin.initializeApp({
|
||||||
|
credential: admin.credential.cert(firebaseSDK)
|
||||||
|
});
|
||||||
|
|
||||||
|
const db = getFirestore()
|
||||||
|
|
||||||
|
router.get("/", async (req, res) => {
|
||||||
|
|
||||||
|
console.log(req.body)
|
||||||
|
|
||||||
|
//Check if body.user has sended
|
||||||
|
if (!req.body || !req.body.user) {
|
||||||
|
res.status(400).json({message: "User not defined on the body of request"})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//Get user data
|
||||||
|
const user = req.body.user
|
||||||
|
|
||||||
|
const userData = {}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const userReference = db.collection('users')
|
||||||
|
const userRequest = await userReference.where("username", "==", user).limit(1).get()
|
||||||
|
|
||||||
|
userRequest.forEach(doc => {
|
||||||
|
userData.id = doc.id
|
||||||
|
userData.username = doc.data()
|
||||||
|
})
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err)
|
||||||
|
res.status(400).json(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
//Check if the userID is defined
|
||||||
|
if (!userData.id) {
|
||||||
|
res.status(400).json({message: "User don't found"})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
//Get user posts
|
||||||
|
userData.posts = []
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
const postsReference = await db.collection('users').doc(userData.id).collection("posts").get()
|
||||||
|
|
||||||
|
postsReference.forEach(doc => {
|
||||||
|
userData.posts.push({
|
||||||
|
id: doc.id,
|
||||||
|
data: doc.data()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
} catch (error) {
|
||||||
|
console.log(err)
|
||||||
|
res.status(400).json(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
//Hide user id
|
||||||
|
userData.id = null
|
||||||
|
|
||||||
|
res.json(userData)
|
||||||
|
})
|
||||||
|
|
||||||
|
module.exports = router
|
||||||
@@ -3,8 +3,13 @@ const server = express()
|
|||||||
|
|
||||||
const port = 3000
|
const port = 3000
|
||||||
|
|
||||||
|
server.use(express.json())
|
||||||
|
|
||||||
const index = require('./routes/index.js')
|
const index = require('./routes/index.js')
|
||||||
server.use("/", index)
|
server.use("/", index)
|
||||||
|
|
||||||
|
const user = require('./routes/user.js')
|
||||||
|
server.use("/user", user)
|
||||||
|
|
||||||
server.listen(port)
|
server.listen(port)
|
||||||
console.log("Listening in the port ", port)
|
console.log("Listening in the port ", port)
|
||||||
Reference in New Issue
Block a user