Mongoose中的方法和静态方法有什么区别?

方法和静态之间有什么区别?

Mongoose API将静态定义为

Statics are pretty much the same as methods but allow for defining functions that exist directly on your Model. 

究竟是什么意思? 现有的模型是什么意思?

来自文档的静态代码

 AnimalSchema.statics.search = function search (name, cb) { return this.where('name', new RegExp(name, 'i')).exec(cb); } Animal.search('Rover', function (err) { if (err) ... }) 

想象一个static像“覆盖”一个“现有”的方法。 所以几乎直接来自可search的文档:

 AnimalSchema.statics.search = function search (name, cb) { return this.where('name', new RegExp(name, 'i')).exec(cb); } Animal.search('Rover', function (err) { if (err) ... }) 

这基本上把一个不同的签名放在一个“全局”方法上,但是只有在为这个特定的模型调用时才被应用。

希望能更清楚一点。

这好像是

' 方法 '将实例方法添加到从Models构build的文档中

静态 ”将静态“类”方法添加到模型本身

从文档:

架构#方法(method,[fn])

将实例方法添加到从此架构编译的模型构造的文档中。

 var schema = kittySchema = new Schema(..); schema.method('meow', function () { console.log('meeeeeoooooooooooow'); }) 

架构#static(name,fn)

将静态“类”方法添加到从此模式编译的模型中。

 var schema = new Schema(..); schema.static('findByName', function (name, callback) { return this.find({ name: name }, callback); });