mongoose中的链静态方法不起作用

时间:2018-05-18 07:52:24

标签: javascript node.js mongodb mongoose

我在es6中尝试过静态方法,为什么我不能像下面那样链接我的静态方法呢?甚至可以链接2个静态方法吗?

//nameModel.js
const schema = new mongoose.Schema({ name: String })
class NameClass {
  static async findAll() {
    return this.find({})
  }
}
schema.loadClass(NameClass)
export const model = initModel('NameSchema', schema)

//controller.js
import { model as NameModel } from '../models/nameModel'
export default () => async (req, res) {
  try {


const test = await NameModel.findAll()
    console.log('test', test) //have all the records

    const response = await NameModel.findAll().sort('-name') // NameMode.sort is not a function
  } catch (e) {
    console.log(e)
  }
}

mongoose模式中静态和非静态方法之间的差异是什么?我很困惑,因为doc只显示代码示例。我觉得这是多余的,因为它没有显示两个http://mongoosejs.com/docs/advanced_schemas.html

之间的差异

1 个答案:

答案 0 :(得分:1)

静态方法中的

this是指类函数本身,因为它定义为类的方法。

class NameClass {
  static async findAll() {
    return this.find({})
  }
}

等于:

class NameClass {}
NameClass.findAll = async function() {
  return this.find({})
}

请参阅MDN Classes