Search code examples
node.jsexpressmean-stackmeanjs

ReferenceError: number is not defined in MEAN


I am creating CRUD operation in MEAN , i have created dataScehema.js file to defined model

var mongoose = require('mongoose');

var countrySchema = mongoose.Schema({
      name: { type: number },
      country: { type: number }    
});


module.exports = mongoose.model('country', countrySchema);

And in my index.js to define node js server code

var http = require('http');
var express = require('express');
var port = process.env.PORT || 8080;
var app = express();
var appRoutes = require('./routes/appRoute'); 
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var model = require('./model/dataSchema');

mongoose.connect('mongodb://localhost/meanDb')

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use('/',appRoutes);
http.createServer(app).listen(port);

console.log('Backend is running on port:',port);

And the third file i will create for route appRoute.js,

var express = require('express');
var router = express.Router();
var Country = require('../model/dataSchema');

router.post('/create', (req, res, next) => {
   var newCountry = new Country({
       name: req.body.name,
       capital: req.body.capital
   });
   newCountry.save((err, country) => {
      if (err)
          res.status(500).json({ msg: err });
          res.status(200).json({msg: country});
    })

});

So anyone, please help me.


Solution

  • Your schema type should be Number instead of number

    var countrySchema = mongoose.Schema({
          name: { type: Number },
          country: { type: Number }    
    });