1

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

我是 Node 的初学者,如果这是一个愚蠢的错误,我很抱歉。

这是我的代码的一部分:


路由.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. 您的架构的实例方法应该定义在MemberSchema.methods(不是.method)上。
  2. findAll这样返回实例的方法应该定义为模式的静态方法(onMemberSchema.statics)而不是实例方法。
  3. 您应该正在 exporting MyModel,而不是new MyModel像现在这样的实例。 module.exports = MyModel;
  4. route.js不应该在new其中使用,require因为您希望 MyModel 类可用于文件,而不是它的实例。
于 2012-08-29T14:19:07.460 回答
0

对于 find 函数,语法通常是

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

如果您没有任何特定条件并想全部查找,您可以在条件 {} 中给出空对象

<modelname>.find({},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);
于 2019-07-15T02:09:34.397 回答