'Im getting a '400 Bad Request' error when attempting to check my route
Im building a user management system an have all my routes created so far (the code willbe below) but im not sure where I went wrong for an error to happen. Im also getting a syntax error of 'unexpected number in JSON at position 69' can anyone try to explain or at least find where the error is? here are my routes.
const User = require('../Modelschema/users')
const { validationResult } = require('express-validator')
const getUsers = async (req, res) => {
try {
const users = await User.find({ email })
if(!users) return res.status(400).send({error: 'User not found'})
res.json({users: users})
} catch (error) {
console.error(error)
}
}
const getUser = async (req, res) => {
try {
const { id } = req.params
const user = await User.findById(id).populate('name', 'contact', 'email' ({ name: req.body.name , email: req.body.email, contact: req.body.contact}))
if(!user) return res.status(400).send({error: 'User not found'})
res.json(user)
} catch (error) {
console.error(error)
}
}
const createUser = (req, res) => {
try {
const errors = validationResult(req)
if(!errors.isEmpty()) return res.status(400).json({ errors: errors.array()})
console.log(errors)
//new instance of user
const user = new User({
name: req.body.name,
email: req.body.email,
contact: req.body.contact })
//save the user
user.save()
.then(data => {
res.json(data)
res.send('User added successfully!')
console.log(data)
})
.catch(err => {
res.status(400).json(err)
})
} catch (error) {
console.error(error)
}
}
const deleteUser = async (req, res) => {
try {
const { id } = req.params
const user = await User.findByIdAndDelete(id, {
runValidators: true, context: 'query'
})
if(!user) res.status(400).send({error: 'User not found'})
res.status(200).send({error: 'User deleted'})
} catch (error) {
console.error(error)
}
}
const updateUser = (req, res) => {
const { id } = req.params
const user = User.findByIdAndUpdate(id, {
runValidators: true, context: 'query'
})
Object.assign(user, req.body);
user.save()
res.send({ data: user})
res.send("User updated successfully!")
}
module.exports = { getUser, getUsers, updateUser, deleteUser, createUser}
here is where I have all my routes for inputing
const express = require('express');
const { getUsers, createUser, getUser, updateUser, deleteUser } = require('../controllers/users.js')
const router = express.Router();
const { check } = require('express-validator')
router.get("/users", getUsers)
router.get("/user/:id", getUser)
router.post("/user", createUser, [
check('name', 'Name is required!'),
check('email', 'Email is required!'),
check('contact', 'Contact is required!')
])
router.put("/user/:id", updateUser)
router.delete("/user/:id", deleteUser)
module.exports = router;
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
