我在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
之间的差异答案 0 :(得分:1)
this
是指类函数本身,因为它定义为类的方法。
class NameClass {
static async findAll() {
return this.find({})
}
}
等于:
class NameClass {}
NameClass.findAll = async function() {
return this.find({})
}
请参阅MDN Classes