hfz
hfz

Reputation: 337

mongoose-random not working?

I'm using mongoose-random package to grab random item from my MongoDB database. Here's my code:

// Bring Mongoose into the app
var mongoose = require( 'mongoose' );
var random = require('mongoose-random');

var DBNAME = 'test';
var COLLNAME = 'koleksigj';
var DBURI = 'mongodb://localhost/' + DBNAME;

// Connect to DB
mongoose.connect(DBURI);

// Create the schema
var quizSchema = new mongoose.Schema({ title: String, body: String });
quizSchema.plugin(random);

// Make the model
var Quiz = mongoose.model('Quiz', quizSchema);

// Make query
Quiz.findRandom(function (err, quiz) {
  console.log(quiz);
})

// CONNECTION EVENTS
// When successfully connected
mongoose.connection.on('connected', function () {
  console.log('Mongoose default connection open to ' + dbURI);
});

// If the connection throws an error
mongoose.connection.on('error',function (err) {
  console.log('Mongoose default connection error: ' + err);
});

// When the connection is disconnected
mongoose.connection.on('disconnected', function () {
  console.log('Mongoose default connection disconnected');
});

// If the Node process ends, close the Mongoose connection
process.on('SIGINT', function() {
  mongoose.connection.close(function () {
    console.log('Mongoose default connection disconnected through app termination');
    process.exit(0);
  });
});

It seems like my mongoose-random usage is similar to the documentation here.

However I get this error message:

hfz:mong-final Hfz$ node all.js

/Users/Hfz/Dev/nodejs/mong-euro/mong-final/all.js:23
Quiz.findRandom(function (err, quiz) {
     ^
TypeError: Object function model(doc, fields, skipId) {
    if (!(this instanceof model))
      return new model(doc, fields, skipId);
    Model.call(this, doc, fields, skipId);
  } has no method 'findRandom'
    at Object.<anonymous> (/Users/Hfz/Dev/nodejs/mong-euro/mong-final/all.js:23:6)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:902:3

Upvotes: 0

Views: 513

Answers (1)

JohnnyHK
JohnnyHK

Reputation: 311945

If you look at the example in the Git repository it's slightly different than the one on NPM.

Change the line that adds the plugin to quizSchema to call random() instead of just passing it in:

quizSchema.plugin(random());

Upvotes: 3

Related Questions