我正在使用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
答案 0 :(得分:3)
如果你看一下Git repository中的例子,它与NPM上的例子略有不同。
将添加插件的行更改为quizSchema
至调用 random()
,而不是仅将其传入:
quizSchema.plugin(random());