DEV Community

himpat202
himpat202

Posted on

Error while doing post request

error->
{
"message": "Invalid inputs are passed, please check your data."
}

(https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o5lcvbavsq1lq3d7s152.png)
location.js file-->
const axios = require('axios');

const HttpError = require('../models/http-error');

const API_KEY = '{google geocoding API_KEY}';

async function getCoordsForAddress(address) {
// return {
// lat: 40.7484474,
// lng: -73.9871516
// };
const response = await axios.get(
https://maps.googleapis.com/maps/api/geocode/json?address=${encodeURIComponent(
address
)}&key=${API_KEY}

);

const data = response.data;

if (!data || data.status === 'ZERO_RESULTS') {
const error = new HttpError(
'Could not find location for the specified address.',
422
);
throw error;
}

const coordinates = data.results[0].geometry.location;

return coordinates;
}

module.exports = getCoordsForAddress;

places-controllers.js --->
//const uuid = require('uuid');
const { validationResult } = require('express-validator');

const HttpError = require('../models/http-error');
const getCoordsForAddress = require('../util/location');
const Place = require('../models/place');

let DUMMY_PLACES = [
{
id: 'p1',
title: 'Empire State Building',
description: 'One of the most famous sky scrapers in the world!',
location: {
lat: 40.7484474,
lng: -73.9871516
},
address: '20 W 34th St, New York, NY 10001',
creator: 'u1'
}
];

const getPlaceById = async (req, res, next) => {
const placeId = req.params.pid; // { pid: 'p1' }

let place;
try {
place = await Place.findById(placeId);
} catch (err) {
const error = new HttpError(
'Something went wrong, could not find a place.',
500
);
return next(error);
}

if (!place) {
const error = new HttpError(
'Could not find a place for the provided id.',
404
);
return next(error);
}

res.json({ place: place.toObject({ getters: true }) }); // => { place } => { place: place }
};

// function getPlaceById() { ... }
// const getPlaceById = function() { ... }

const getPlacesByUserId = async (req, res, next) => {
const userId = req.params.uid;

let places;
try {
places = await Place.find({ creator: userId });
} catch (err) {
const error = new HttpError(
'Fetching places failed, please try again later',
500
);
return next(error);
}

if (!places || places.length === 0) {
return next(
new HttpError('Could not find places for the provided user id.', 404)
);
}

res.json({ places: places.map(place => place.toObject({ getters: true })) });
};

const createPlace = async (req, res, next) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return next(
new HttpError('Invalid inputs are passed, please check your data.', 422)
);
}

const { title, description, address, creator } = req.body;

let coordinates;
try {
coordinates = await getCoordsForAddress(address);
} catch (error) {
return next(error);
}

// const title = req.body.title;
const createdPlace = new Place({
title,
description,
address,
location: coordinates,
image:
'https://upload.wikimedia.org/wikipedia/commons/thumb/1/10/Empire_State_Building_%28aerial_view%29.jpg/400px-Empire_State_Building_%28aerial_view%29.jpg',
creator
});

try {
await createdPlace.save();
} catch (err) {
const error = new HttpError(
'Creating place failed, please try again.',
500
);
return next(error);
}

res.status(201).json({ place: createdPlace });
};

const updatePlace = async (req, res, next) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
throw new HttpError('Invalid inputs passed, please check your data.', 422);
}

const { title, description } = req.body;
const placeId = req.params.pid;

let place;
try {
place = await Place.findById(placeId);
} catch (err) {
const error = new HttpError(
'Something went wrong, could not update place.',
500
);
return next(error);
}

place.title = title;
place.description = description;

try {
await place.save();
} catch (err) {
const error = new HttpError(
'Something went wrong, could not update place.',
500
);
return next(error);
}

res.status(200).json({ place: place.toObject({ getters: true }) });
};

const deletePlace = async (req, res, next) => {
const placeId = req.params.pid;

let place;
try {
place = await Place.findById(placeId);
} catch (err) {
const error = new HttpError(
'Something went wrong, could not delete place.',
500
);
return next(error);
}

try {
await place.remove();
} catch (err) {
const error = new HttpError(
'Something went wrong, could not delete place.',
500
);
return next(error);
}

res.status(200).json({ message: 'Deleted place.' });
};

exports.getPlaceById = getPlaceById;
exports.getPlacesByUserId = getPlacesByUserId;
exports.createPlace = createPlace;
exports.updatePlace = updatePlace;
exports.deletePlace = deletePlace;

Top comments (0)