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
|
||||
|
||||
.env
|
||||
functions
|
||||
firebase
|
||||
@@ -20,6 +20,8 @@
|
||||
"homepage": "https://github.com/FranP-code/open-react-blog-api#readme",
|
||||
"dependencies": {
|
||||
"express": "^4.18.1",
|
||||
"firebase-admin": "^10.2.0",
|
||||
"nodemon": "^2.0.16",
|
||||
"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
|
||||
|
||||
server.use(express.json())
|
||||
|
||||
const index = require('./routes/index.js')
|
||||
server.use("/", index)
|
||||
|
||||
const user = require('./routes/user.js')
|
||||
server.use("/user", user)
|
||||
|
||||
server.listen(port)
|
||||
console.log("Listening in the port ", port)
|
||||
Reference in New Issue
Block a user