Model view controller Node.JS/Mongoose/Express->;对象没有方法”;findAll“;

Model view controller Node.JS/Mongoose/Express->;对象没有方法”;findAll“;,model-view-controller,node.js,methods,express,mongoose,Model View Controller,Node.js,Methods,Express,Mongoose,我正在尝试将一个方法从model.js传递到route.js。。我的路线没有找到任何方法!我搜索了一个解决方案,测试了很多代码,但没有成功 我是Node的初学者,如果这是一个愚蠢的错误,我很抱歉 这是我代码的一部分: Route.js var mongoose = require('mongoose'); var membersModel = new require('../models/MemberModel'); // Member list page exports.list =

我正在尝试将一个方法从model.js传递到route.js。。我的路线没有找到任何方法!我搜索了一个解决方案,测试了很多代码,但没有成功

我是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;
谢谢你花时间帮助我。
如果你想要其他信息,告诉我

我认为您在这里遇到了一些问题:

  • 架构的实例方法应该在
    MemberSchema.methods
    (而不是
    .method
    )上定义
  • findAll
    这样返回实例的方法应该定义为模式的静态方法(在
    MemberSchema.statics上)
    而不是实例方法
  • 您应该导出的是
    MyModel
    ,而不是像现在这样的
    新MyModel
    实例<代码>模块.exports=MyModel
  • route.js
    不应在其
    require
    中使用
    new
    ,因为您希望MyModel类可用于该文件,而不是其实例

  • 我认为您在这里有一些问题:

  • 架构的实例方法应该在
    MemberSchema.methods
    (而不是
    .method
    )上定义
  • findAll
    这样返回实例的方法应该定义为模式的静态方法(在
    MemberSchema.statics上)
    而不是实例方法
  • 您应该导出的是
    MyModel
    ,而不是像现在这样的
    新MyModel
    实例<代码>模块.exports=MyModel
  • route.js
    不应在其
    require
    中使用
    new
    ,因为您希望MyModel类可用于该文件,而不是其实例

  • 对于find函数,语法通常为

    <modelname>.find({conditions},function(err, results){
    //use the results
    });
    

    对于find函数,语法通常为

    <modelname>.find({conditions},function(err, results){
    //use the results
    });
    
    const articleSchema = {
      title: String,
      content: String
    };
    
    // to create a new model named Article
    const Article = mongoose.model("article",articleSchema);