我正在使用node express和mongodb使用mongoose构建API。 我有一个处理用户帖子的帖子资源,并希望能够对帖子资源执行各种查询。 例如,我有一个函数,它返回所有帖子如下:
// Gets a list of Posts
exports.index = function(req, res) {
console.log(req.query);
Post.findAsync()
.then(mUtil.responseWithResult(res))
.catch(mUtil.handleError(res));
};
我正在寻找处理请求可能附带的任何其他查询参数的好方法。
/posts
会返回所有帖子,但/posts?user=12
会返回ID为12的用户发帖,而/posts?likes=12
会返回12个或更多喜欢的帖子。
如何检查并应用这些查询参数来过滤并返回结果,因为它们可能存在也可能不存在。 谢谢;)
答案 0 :(得分:0)
如果user=12
表示" ID为12"的用户,则likes=12
表示"喜欢大于12"?您需要对查询更具描述性。您可以通过传递一个对象数组来实现。以可解释的方式发送您的查询:
var filters = [
{
param: "likes",
type: "greater"
value: 12
},
{
param: "user",
type: "equal",
value: "12"
}]
var query = Post.find();
filters.forEach(function(filter) {
if (filter.type === "equal") {
query.where(filter.param).equals(filter.value);
}
else if (filter.type === "greater") {
query.where(filter.param).gt(filter.value);
}
// etc,,,
})
query.exec(callback);