Ashutosh Khandelwal
Ashutosh Khandelwal

Reputation: 11

Duplicate entry in mongo db

I am new to Express.js and I am currently designing an app with CRD operations. In that I don't want to insert duplicate username. Can you help me in that about what to add in this file and js file or give any hint so that I can proceed.

var express = require('express');
var router = express.Router();

/* GET userlist. */
router.get('/userlist', function(req, res) {
  var db = req.db;
  var collection = db.get('userlist');
  collection.find({},{},function(e,docs){
    res.json(docs);
  });
});

/* POST to adduser. */
router.post('/adduser', function(req, res) {
  var db = req.db;
  var collection = db.get('userlist');
  collection.insert(req.body, function(err, result){
    res.send(
      (err === null) ? { msg: '' } : { msg: err }
    );
  });
});

/* DELETE to deleteuser. */
router.delete('/deleteuser/:id', function(req, res) {
  var db = req.db;
  var collection = db.get('userlist');
  var userToDelete = req.params.id;
  collection.remove({ '_id' : userToDelete }, function(err) {
    res.send((err === null) ? { msg: '' } : { msg:'error: ' + err });
  });
});

module.exports = router;

Upvotes: 0

Views: 489

Answers (1)

Ece Nur Battal
Ece Nur Battal

Reputation: 11

You can create a scheme like this for mongoDB collections using mongoose:

const mongoose = require('mongoose');

const Schema = mongoose.Schema;

const userSchema = new Schema({
  username: {
    type: String,
    required: true,
    unique: true,
  },
});

const User = mongoose.model('User', userSchema);

module.exports = User;

and you can use it like this:

let User = require('../models/user.model');

router.post('/adduser', function(req,res) {
  const username = req.body.username;

  const newUser = new User({username});

  newUser.save()
    .then(() => res.json('User added!'))
    .catch(err => res.status(400).json('Error: ' + err));
});

Upvotes: 1

Related Questions