2014-09-02 25 views
1

我試圖使用mongoose-pagination包,並試圖按照提供的文檔,但它似乎沒有與我的模型一起工作。我收到此錯誤信息:使用貓鼬分頁包的模型錯誤

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

而且我不知道,因爲插件應該允許PAGINATE方法爲什麼我收到此錯誤。

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

回答

1

要調用這個錯誤。 .paginate()方法在模型上實例化。因此,您在架構上設置了插件,然後從您的模型實例進行調用。在簡化形式:

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 

}) 
+0

Thanx @ Neil,這個答案真的有幫助。 – 2016-08-03 06:25:53

0

我會添加到選定的答案,在一個更復雜的例子的情況下,應該提防架構的緩存:我的新模型,使用相同的名稱,這是現有模型創建沒有增加pagniate功能。

當我使用Schema創建模型時,我得到的是舊版本(緩存)而不是新版本(帶有分頁的版本)。

簡而言之:爲不同型號使用不同的名稱!

希望這可以幫助別人!