Я создаю REST API
и могу подключиться к серверу и базе данных. Проблема в том, что когда я пытаюсь добавить пользователя в базу данных в Postman
, он сохраняет пользователя в базе данных, но пользователь не определен. Я получаю пустой объект в моем MongoDB
.
Пример результата:
_id:ObjectId("5e8e108487d47c2d87872f20")
date:2020-04-08T17:43:29.445+00:00
__v:0
Модель
const mongoose = require('mongoose');
const userSchema = mongoose.Schema({
first_name: {type: String, require: true},
last_name: {type: String, require: true},
email: {type: String, require: true},
password: {type: String, require: true},
date: {type: Date, default: Date.now()}
});
module.exports = mongoose.model('User', userSchema);
Маршруты
const router = require('express').Router();
const jwt = require('jsonwebtoken');
const bcrypt = require('bcrypt');
const User = require('../models/user');
router.post('/register', (req, res) => {
const today = new Date();
const userData = {
first_name: req.body.first_name,
last_name: req.body.last_name,
email: req.body.email,
password: req.body.password,
created: today
}
User.findOne({
email: req.body.email
})
.then(user => {
if(!user){
bcrypt.hash(req.body.password, 10, (err, hash) => {
userData.password = hash
User.create(userData)
.then(user => {
res.json({status: user.email + ' registered!'})
})
.catch(err => {
res.send('error: ' + err)
})
})
} else {
res.json({error: ' user already exists'})
}
})
.catch(err => {
res.send('error: ' + err)
})
})
module.exports = router;
Сервер
const express = require('express');
const mongoose = require('mongoose');
const cors = require('cors');
require('dotenv').config();
const app = express();
const PORT = process.env.PORT || 5000;
const URI = process.env.MONGO_URI;
// parse requests
app.use(express.json());
app.use(cors());
// Connecting to DB
mongoose.connect(URI, { useNewUrlParser: true, useCreateIndex: true});
const connection = mongoose.connection;
connection.once('open', () => {
console.log('MongoDB database connection established successfully');
})
const usersRouter = require('./api/routes/users');
app.use('/users', usersRouter);
app.listen(PORT, () => {
console.log(`Server is listening on port ${PORT}`);
});