【发布时间】:2015-09-25 08:10:57
【问题描述】:
在 Mongoose API 文档中,有Model#remove,还有Model.remove。
有人可以用外行的话解释一下这两者之间有什么区别吗?它们似乎接受不同的参数。为什么一个使用点而另一个使用散列?除了 API 文档中的解释之外,我还需要更清晰的解释。
【问题讨论】:
在 Mongoose API 文档中,有Model#remove,还有Model.remove。
有人可以用外行的话解释一下这两者之间有什么区别吗?它们似乎接受不同的参数。为什么一个使用点而另一个使用散列?除了 API 文档中的解释之外,我还需要更清晰的解释。
【问题讨论】:
Model#remove 是实例方法,Model.remove 是类方法。
换句话说,假设您有一个名为Users 的模型。要从属于该模型的集合中删除某些内容,您有两种选择(此示例有点做作):
Users.findOne(CONDITION, function(err, user) {
if (err) throw err;
user.remove(function(err) {
if (err) throw err;
// user is removed
});
});
这使用Model#remove:您有一个模型实例存储在user 中,您可以通过调用实例上的remove 方法从数据库中删除该实例。
另一个选项:
Users.remove(COND, function(err) {
if (err) throw err;
// user_s_ matching COND have been removed
});
基本上,Model#remove 用于删除您已经拥有的实例的单个文档,Model.remove 用于删除可能匹配特定条件的文档列表或您不匹配的文档一定要先从数据库中检索。
【讨论】: