gurps
gurps

Reputation: 121

I am getting an error of mongoose is not defined

I am creating an api using MongoDB, I am using Mongoose to create Data Persistence. However I am getting an error that Mongoose is not defined, I have used require function to call the node module but it is still giving me the same error.

Below is the connection file

var mongoose = require('mongoose')
var database = 'api'

const server = 'mongodb://localhost:27017/'+database
 console.log(server)

mongoose.connect(server)
const db = mongoose.connection
console.log(db)

var Schema = mongoose.Schema
var ObjectId = Schema.ObjectId

const WeatherSchema = new Schema({
  id: {type: String, required: true},
  name: { type: String, required: true },
  items: {type: String, required: true}
 })

 var WeatherDB = mongoose.model('DBlist', WeatherSchema)

Upvotes: 1

Views: 3663

Answers (1)

Andrey Popov
Andrey Popov

Reputation: 7510

You should wait for the database to connect, as it doesn't happen immediately. Something like this:

var mongoose = require('mongoose');
mongoose.connect(sever);
var db = mongoose.connection;
db.on('disconnect', connect); // auto reconnecting
db.on('error', function(err) {
    debug('connection error:', err);
});
db.once('open', function (callback) {
    // we're in the game, start using your Schema
    const WeatherSchema = new Schema({...
});

p.s. I've added little extra sugar just to let you know these events exist and are quite helpful to understand what's going on.

Upvotes: 2

Related Questions