Tuesday 6 June 2017

MongoDB inserts document without properties

I'm using postman to test my db when I try to insert the following:

{
    "name":"John Doe",
    "password" : "123456"   
}

I'm building a MEAN stack application.Also, I noticed if I set the properties to be required, postman tells me that it Failed to register user. That's why I comment it out, but even without it and getting a postive response I still get empty documents in my collection.

Postman tells me:

{
  "success": true,
  "msg": "User registered"
}

My user.js file

 const bcrypt = require ('bcryptjs');
    const config = require ('../config/database');

    //UserSchema

    const UserSchema = mongoose.Schema({            
        username: {
            type: String,
            //required: true
        },
        password: {
            type: String,
            //required: true
        }

    });

    const User = module.exports = mongoose.model("User", UserSchema);

    //To user function outside
    module.exports.getUserById = function(id, callback){
        User.findById(id,callback);
    }

    module.exports.getUserByUsername= function(username, callback){
        const query = {username: username}
        User.findOne (query,callback);
    }

    User.addUser = function (newUser, callback) {
        bcrypt.genSalt(10, (err, salt) =>{
            bcrypt.hash(newUser.password, salt, (err, hash) => {

                newUser.password = hash;
                newUser.save(callback);
            });
        });
    }

My users.js file:

const express = require('express');
const router = express.Router();
const passport = require('passport');
const jwt = require('jsonwebtoken');
const User = require('../modules/user');

// Register
router.post('/register', (req, res, next) => {
  let newUser = new User({
    name: req.body.name,
    email: req.body.email,
    username: req.body.username,
    password: req.body.password
  });

  User.addUser(newUser, (err, user) => {
    if(err){
      res.json({success: false, msg:'Failed to register user'});
    } else {
      res.json({success: true, msg:'User registered'});
    }
  });
});    

module.exports = router;

What I see in my collection:

{
    "_id": {
        "$oid": "5937b36bafdd733088cb27d0"
    },
    "__v": 0
}



via user3109233

No comments:

Post a Comment