2012-08-29 31 views
1

我試圖從我的model.js傳遞一個方法到我的route.js。並且我的路由沒有找到任何方法!我搜索了一個解決方案並測試了很多代碼,但沒有成功。Node.JS/Mongoose/Express - >對象沒有方法「findAll」

我是Node的初學者,所以很抱歉,如果這是一個愚蠢的錯誤。

這是我的代碼的一部分:


Route.js

var mongoose = require('mongoose'); 
var membersModel = new require('../models/MemberModel'); 

// Member list page 
exports.list = function(req, res){ 
    membersModel.findAll(function(err, docs){ 
     res.render('list.jade', { title: 'My Registration App - Member list', member: docs }); 
    }); 
}; 

MemberModel.js

var mongoose = require('mongoose'), 
    Schema = mongoose.Schema, 
    ObjectId = Schema.ObjectId; 

    // Open DB connection 


var MemberSchema = new Schema({ 
    id  : ObjectId, 
    title  : { type: String, required: true, enum: ['Mr', 'Mrs', 'Mme', 'Miss'] }, 
    lastname : { type: String, required: true, uppercase: true, trim: true}, 
    firstname : { type: String, required: true}, 
    mail  : { type: String, trim: true, index: { unique: true, sparse: true } }, 
    date  : Date 
}); 

// ... 

MemberSchema.method.findAll = function (callback) { 
    Members.find(function (err, member) { 
     callback(null, member) 
    }); 
}; 

var conn = mongoose.createConnection('mongodb://localhost/members'); 
var MyModel = conn.model('Members', MemberSchema); 
var instanceMember = new MyModel; 

module.exports = instanceMember; 

感謝時間的推移,我的幫助。 如果您需要其他信息,請告訴我!

回答

4

我覺得你有一些問題在這裏:

  1. 你的模式的實例方法應該MemberSchema.methods(不.method)來定義。
  2. findAll返回實例的方法應該被定義爲架構的靜態方法(上MemberSchema.statics)而不是一個實例方法。
  3. 你應該出口MyModel,而不是它的一個new MyModel比如你現在的樣子。module.exports = MyModel;
  4. route.js不應該在其require只要你想的爲MyModel類可用的文件,而不是它的實例使用new
+0

一些修改它的工作原理之後:d非常感謝! – NicoOw31

相關問題