ES6类扩展猫鼬模型?

Str*_*ch0 5 mongodb node.js ecmascript-6

我试图创建一个代表用户的类,我希望它继承猫鼬类的方法,该类具有查找,保存,删除等功能。

我试图通过实质上执行以下操作来扩展猫鼬模型: class User extends Mongoose.model('User', UserSchema) {}

我的实际代码如下所示:

import { Mongoose } from '../config';
const Schema = Mongoose.Schema;

const UserSchema = new Schema({
    email: { type: String, default: '' },
    firstName: { type: String, default: '' },
    lastName: { type: String, default: '' },
    facebookId: { type: String, default: '' },
    payments: { type: Array, default: [] }
});

const MongoUser = Mongoose.model('User', UserSchema);

class User extends MongoUser {

    constructor(data) {
        super();
    this.email;
    this.firstName;
    this.lastName;
    this.facebookId;
    this.payments;
  }

  save(){

  }

  findUser(data){

    return new Promise((resolve, reject) => {

        super.findOne(data, (err, user) => {

                if(err) {
                    console.log("err", err)
                    reject({err: err});
                }

              if(!user) {
                console.log("No user found")
                reject('No user found');
              }

              if(user){
                console.log("user", user)
                console.log("this", this)

                  this._set(user)

                    resolve(this);
              }

            });

        })

  }

  _set(user){
    this.email = user.email;
    this.firstName = user.firstName;
    this.lastName = user.lastName;
    this.facebookId = user.facebookId;
    this.payments = user.payments;
    return;
  }

}

export default User;
Run Code Online (Sandbox Code Playgroud)

您将看到我正在尝试调用父类的方法,super.findOne()但是却遇到了[TypeError: Cannot read property 'call' of undefined]使我难堪的错误。

没有堆栈跟踪,但是在以下try / catch中捕获了错误:

exports.findUser = async (req, res) => {

    let id = '58ad46dfb558dfe00efa9b02';

    const user = new User();

    try{
        const loggedInUser = await user.findUser({_id: id});
        res.send(loggedInUser);
    }catch(e){
        console.log("e", e)
        res.send(e)
    }   
}
Run Code Online (Sandbox Code Playgroud)

这是从我的路线叫来的:

router.get('/:userID', userController.findUser);
Run Code Online (Sandbox Code Playgroud)

我是在正确的轨道上吗,还是我试图扩展猫鼬模型的方法是正确的?