diff --git a/backend/package-lock.json b/backend/package-lock.json index 063e465..d3d2c32 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -5,6 +5,7 @@ "packages": { "": { "dependencies": { + "body-parser": "^1.19.0", "cors": "^2.8.5", "express": "^4.17.1", "mongoose": "^5.12.0" diff --git a/backend/package.json b/backend/package.json index 7a42773..b2f6486 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,5 +1,6 @@ { "dependencies": { + "body-parser": "^1.19.0", "cors": "^2.8.5", "express": "^4.17.1", "mongoose": "^5.12.0" diff --git a/backend/routes/room.js b/backend/routes/room.js index ebd7b19..c79f971 100644 --- a/backend/routes/room.js +++ b/backend/routes/room.js @@ -4,22 +4,44 @@ var router = express.Router(); var RoomModel = require('../schemas/room'); //creating new room in db -router.post('/add', function (req, res) { - - //setting values from request to object - let newRoom = new RoomModel({ - id: req.body.id, - createDate: req.body.createDate, - started: req.body.started, - players: req.body.players, - positions: req.body.positions +router.post('/add', async function (req, res) { + RoomModel.findOne( { full: false, started: false }, function (err, results) { + if (err) { + console.log(err); + } + if (!results) { + let newRoom = new RoomModel({ + createDate: new Date, + full: false, + started: false, + players: [req.body.name], + }); + newRoom.save() + .then(() => res.status(200).json('Added new room')) + .catch(err => res.status(400).json('Error: ' + err)); + }else { + + let players = results.players; + players.push(req.body.name); + let updateObj = { + players: players, + } + players.length === 4 ? updateObj.full = true : updateObj.full = false; + RoomModel.findOneAndUpdate( + { _id: results._id }, + updateObj, + function (err, docs) { + if (err){ + console.log(err) + } + else{ + console.log("Updated Docs : ", docs); + } + } + ); + + } }); - - //saving room in db - newRoom.save() - .then(() => res.status(200).json('Added new room')) - .catch(err => res.status(400).json('Error: ' + err)); - }); //deleting room after game ends diff --git a/backend/schemas/room.js b/backend/schemas/room.js index b60f357..c1225d4 100644 --- a/backend/schemas/room.js +++ b/backend/schemas/room.js @@ -3,9 +3,9 @@ var mongoose = require('mongoose'); var Schema = mongoose.Schema; var RoomSchema = new Schema({ - id: Number, createDate: Date, started: Boolean, + full: Boolean, players: Array, positions: Map }); diff --git a/backend/server.js b/backend/server.js index 3b7ac60..3111dfa 100644 --- a/backend/server.js +++ b/backend/server.js @@ -1,6 +1,11 @@ const express = require("express"); const cors = require('cors'); +const bodyParser = require('body-parser'); const app = express(); +app.use(bodyParser.urlencoded({ + extended: true +})); +app.use(bodyParser.json()); app.use(cors()); const PORT = 3000|| process.env.PORT; diff --git a/src/components/NameInput.jsx b/src/components/NameInput.jsx index 6ebbe5a..0302341 100644 --- a/src/components/NameInput.jsx +++ b/src/components/NameInput.jsx @@ -8,7 +8,11 @@ const NameInput = () => { } const handleButtonClick = () => { - axios.post('http://localhost:3000/room/add') + axios.post('http://localhost:3000/room/add',{ + name: inputValue + },{ + "Content-Type": "application/json" + }) } return(