Mongoose 无法读取属性';型号';未定义的

Mongoose 无法读取属性';型号';未定义的,mongoose,methods,sinon,Mongoose,Methods,Sinon,这是我对猫鼬方法的探索。任何建议都非常感谢。Mocha抱怨它找不到我的模型集合(在我的代码中是“this.model('User'....行))。我正在使用sinon存根来存根模型和方法名称 模式的单元测试(验证验证器)进行得很顺利。我正试图用一个简单的mongoose.method来解决这个问题 托尼 Mongoose方法(Mongoose模式文件的底部): 我对该方法的测试: it('gets a User', (done) => { sinon.stub(User, 'find

这是我对猫鼬方法的探索。任何建议都非常感谢。Mocha抱怨它找不到我的模型集合(在我的代码中是“this.model('User'....行))。我正在使用sinon存根来存根模型和方法名称

模式的单元测试(验证验证器)进行得很顺利。我正试图用一个简单的mongoose.method来解决这个问题

托尼

Mongoose方法(Mongoose模式文件的底部):

我对该方法的测试:

it('gets a User', (done) => {
  sinon.stub(User, 'findOne');
  let u = new User({ lname: 'Pickles' });

  u.findUser();

  sinon.assert.calledWith(User.findOne, { lname: 'Pickles' });
  done();
});

在schema函数中,当您创建findUser函数时,您可以调用此.model('User').findOne…在代码中的这一点上,您还需要将UserSchema设置为一个模型。这是在您创建模型时导出模型的模式文件底部完成的

这是您的问题,因为您试图在创建用户模型之前访问该模型。但我要问,您为什么要在模型中编写此函数?此函数与模型交互,但无助于定义它。我的建议是创建一个用户控制器,并在其中导入模型,然后将此函数作为w写入其中呃,像这样的:

用户控制器
constusermodel=require('your-model-here');
函数findUser(最后一个,cb){
UserModel.findOne({lname:last},(err,val)=>{
cb(!!val);
});
}
it('gets a User', (done) => {
  sinon.stub(User, 'findOne');
  let u = new User({ lname: 'Pickles' });

  u.findUser();

  sinon.assert.calledWith(User.findOne, { lname: 'Pickles' });
  done();
});