Why two remove reference item are there for Model.

2019-08-17 05:59发布

问题:

After landing into the API docs of mongoose, there is left side menu, Under model.js section. We see something like this:

- model.js

    -Model
    -save
    -increment
    -remove      <== 1
    -model
    -$where
    -ensureIndexes
    -remove      <== 2
    ...

Both remove are having the link to Model#remove([fn])

There is one more topic which is not linked. Titled Model.remove(conditions, [callback]) which is documented under the same model.js section. (just after the topic Model.ensureIndexes)

Could anyone one tell me what is the difference between both?

回答1:

You can always browse the source code for mongoose. It's a great way to learn how it works.

There are two removes:

  1. Model.prototype.remove => this removes a specific mongoose Model object from a collection. It works on an instance.

    Model.prototype.remove = function remove (fn) { ... }

  2. Model.remove => this bypasses the Mongoose library and uses conditions supplied as the first parameter to perform a remove:

    Model.remove = function remove (conditions, callback) { ... }

(It is documented on the page as Model.remove, but it appears there's something wrong with the anchors on the page are pointed to the wrong function, likely because of the duplicated name.)