1

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;

私を助けてくれてありがとう。他の情報が必要な場合は、教えてください!

4

2 に答える 2

4

ここにいくつかの問題があると思います:

  1. スキーマのインスタンス メソッドは on MemberSchema.methods(not .method) で定義する必要があります。
  2. インスタンスを返すようfindAllなメソッドは、スキーマの静的メソッド (MemberSchema.statics)インスタンス メソッドではなく on) として定義する必要があります。
  3. 現在のインスタンスでは MyModelなく、エクスポートする必要があります。new MyModelmodule.exports = MyModel;
  4. route.jsMyModel クラスをそのインスタンスではなくファイルで使用できるようにするため、newその中で使用しないでください。require
于 2012-08-29T14:19:07.460 に答える