Javascript 传递要调用的model.find作为参数会导致错误

Javascript 传递要调用的model.find作为参数会导致错误,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我已经使用ExpressJS有一段时间了。我正在学着用猫鼬来对付它 在查询的回调中:function(error,data){…}我有很多处理错误的重复代码。为此,我制作了一个函数checkedQuery,它调用查询,处理它的错误,然后将数据传递给回调 注意,下面的一些代码已被删除、简化、注释掉,因为它与实际问题无关 function checkedQuery( queryFn, callback ) { queryFn( function( error, data ) { if (

我已经使用ExpressJS有一段时间了。我正在学着用猫鼬来对付它

在查询的回调中:function(error,data){…}我有很多处理错误的重复代码。为此,我制作了一个函数checkedQuery,它调用查询,处理它的错误,然后将数据传递给回调

注意,下面的一些代码已被删除、简化、注释掉,因为它与实际问题无关

function checkedQuery( queryFn, callback ) {
  queryFn( function( error, data ) {
    if ( error ) {
      // ServerErrorResponse(....); Handles sending out the proper json error response
      return;
    }
    callback( data );
  });
}
在我的mongoose模型的其他地方,我定义了一个函数,该函数仅获取所有用户名的列表:

UserSchema.statics.getNames = function( callback ) {
  var User = mongoose.model('User');
  User.find({}, 'name', callback );
}
同时使用这两个功能,我没有问题:

checkedQuery( User.getNames, function( userNames ) {
  // ... Handles the user names
  return;
}
我遇到的问题是,当我尝试将User.find direct函数传递到checkedQuery时:

checkedQuery( User.find, function( users ) {
  // ... Handles the users
  return;
}
这里,我从mongoose模块收到一个错误:

TypeError: Cannot read property 'discriminatorMapping' of undefined
    at find (/mypath/server/node_modules/mongoose/lib/model.js:955:18)
最后,关于实际代码,我想指出,仅使用回调函数调用User.find是有效的,不会导致错误: 查找(函数(错误,用户){ //…处理错误和用户数据 }

我怀疑导致这种情况的范围和论点有问题,但我不确定。非常感谢您的帮助


另外,如果您能给我举一些例子,说明创建错误检查查询函数和在功能上传递mongoose查询的更好模式,我希望有一个经过验证的替代方案。

将@idbehold的注释转换为答案:


传递
User.find.bind(User)
而不仅仅是
User.find

传递
User.find.bind(User)
而不仅仅是
User.find
。谢谢,这很有效。