mongoose里面为什么定义了methods方法之后不能用entity调用呢~ ~
发布于 11 年前 作者 TianNiu 4945 次浏览 最后一次编辑是 8 年前

//user.js var mongodb = require(’…/config/mongodb’); var Schema = mongodb.mongoose.Schema; var ObjectId = Schema.ObjectId; var UserSchema = new Schema({ id : ObjectId, name : String, email : String }); UserSchema.methods.findOneByName = function(name, callback) { this.findOne({name : name}, callback); }; module.exports = mongodb.mongoose.model(‘users’, UserSchema);

//index.js var UserModel = require("./user"); var new_user_entity=new UserModel({}); //here 这里怎么不能用这个方法呢~ ~是不是定义错了啊,求救!0.0 new_user_entity.findOneByName(“zhangsan”,function(err,doc){ if(err){ … }else{ … } });

4 回复

有错误信息?

这个方法应该定义在statics

UserSchema.statics.findOneByName = function(name, callback) {
  this.findOne({name : name}, callback);
};

如果要定义实例方法应该这样:

UserSchema.methods.findOneByName = function(name, callback) {
  this.model('users').findOne({name : name}, callback);
};

可是 var new_user_entity=new UserModel({});//这个不就是创建了实例的么0.0,然后调实例methods方法的 这两种方法适应场合是什么呢。。。

并不觉得你这样写有什么错啊,给错误信息看看?

回到顶部