用于find()的Mongoose默认过滤器/查询参数

时间:2015-02-25 13:49:07

标签: node.js mongodb mongoose

如果我有一系列文档,例如:

{
    type: 'post',
    text: 'example',
    status: 'private' // or 'public'
}

我可以使用哪种中间件或架构配置来确保默认情况下,Model.find()仅返回status != 'private'的文档?

我不希望每次查询集合时都必须对status != 'private'进行冗余查询。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您可以尝试为您的模型实施一个包装器方法,例如findNonPrivate(),然后您可以委托它来查找status不等于"private"的每个文档。像这样:

var Model = mongoose.model('Model', theSchema);
Model.findNonPrivate = function (q, callback) {
  q.status = q.status || {"$ne": "private"};
  this.find(q, callback);
}

然后,您可以使用Model.findNonPrivate({}, callback)获得所需内容。