Estoy tratando de usar el mongoose-pagination y traté de seguir la documentación proporcionada, pero no funciona No parece estar trabajando con mi modelo. Recibo este mensaje de error:
/Users/user/Desktop/Projects/node/blog/app/models/blogModel.js:16
BlogPostSchema.paginate({}, 2, 10, function(error, pageCount, paginatedResults
^
TypeError: Object #<Schema> has no method 'paginate'
at Object.<anonymous> (/Users/user/Desktop/Projects/node/blog/app/models/blogModel.js:16:16)
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 Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/Users/user/Desktop/Projects/node/blog/server.js:18:16)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
Y no estoy seguro de por qué recibo este error porque se supone que el complemento permite el método de paginación.
BlogModel.js:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var mongoosePaginate = require('mongoose-paginate');
var BlogPostSchema = new Schema({
title: String,
author: String,
content: String,
date: { type: Date, default: Date.now }
});
BlogPostSchema.plugin(mongoosePaginate);
BlogPostSchema.paginate({}, 2, 10, function(error, pageCount, paginatedResults, itemCount) {
if (error) {
console.error(error);
} else {
console.log('Pages:', pageCount);
}
});
module.exports = mongoose.model('Blogpost', BlogPostSchema);
2 respuestas
Estás llamando a esto mal. El método .paginate()
se instancia en el modelo. Entonces configura el complemento en el esquema y luego realiza llamadas desde la instancia de su modelo. En forma simplificada:
var mongoose = require('mongoose'),
mongoosePaginate = require('mongoose-paginate'),
Schema = mongoose.Schema;
var blogPostSchema = new Schema({
title: String,
author: String,
content: String,
date: { type: Date, default: Date.now }
});
blogPostSchema.plugin( mongoosePaginate );
var Blogpost = mongoose.model( "Blogpost", blogPostSchema );
mongoose.connect('mongodb://localhost/test')
Blogpost.paginate({}, 2, 10, function(err,pageCount, results, count) {
// do something with results
})
Agregaría a la respuesta seleccionada que, en el contexto de un ejemplo más complejo, uno debe tener cuidado con el almacenamiento en caché de esquemas: mi nuevo modelo se creó con el mismo nombre que un modelo existente que no se aumentó con la función pagniate.
Cuando estaba creando el Modelo usando el Esquema, estaba obteniendo la versión anterior (en caché) en lugar de la nueva (la que tenía paginado).
En resumen: ¡use diferentes nombres para diferentes modelos!
Espero que esto ayude a alguien!
Preguntas relacionadas
Nuevas preguntas
javascript
Para preguntas sobre la programación en ECMAScript (JavaScript / JS) y sus diversos dialectos / implementaciones (excepto ActionScript). Incluya todas las etiquetas relevantes en su pregunta; por ejemplo, [node.js], [jquery], [json], etc.