mongoose-random无法正常工作?

时间:2014-02-06 12:39:04

标签: javascript node.js mongoose

我正在使用mongoose-random包从我的MongoDB数据库中获取随机项。这是我的代码:

// 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);
  });
});

我的mongoose-random用法似乎与文档here类似。

但是我收到此错误消息:

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

1 个答案:

答案 0 :(得分:3)

如果你看一下Git repository中的例子,它与NPM上的例子略有不同。

将添加插件的行更改为quizSchema调用 random(),而不是仅将其传入:

quizSchema.plugin(random());