小编Lud*_*sen的帖子

如何使用可选的快速查询参数编写Mongoose查询?

我正在Express 4之上构建一个REST API.对于一个路径,GET /api/users我想要相应地向可选的 queryParams 查询我的用户集合.

因此,对API的调用可能如下所示 host:port/api/users?city=Berlin

在这种情况下name,省略并且不影响查询,而city必须匹配.

我设法通过以下hack来做到这一点.还有比这更好的方法吗?

Users.statics.customFilter = function(qP){
    return this.find({
        $and: [
            {$or: [{undefined: {$eq: qP.city}}, {'city': qP.city}]},
            {$or: [{undefined: {$eq: qP.name}}, {'name': qP.name}]}
        ]
    });

mongoose.model('User', Users);
Run Code Online (Sandbox Code Playgroud)

我正在从像这样的猫鼬模式中调用这个静态函数...

const User = mongoose.model('User');
app.get('/api/users', (req, res) => {
        User.customFilter(req.query)
        .exec((err, results) => {
            if (err) return next(err);
            res.json(results);
        });
    });
Run Code Online (Sandbox Code Playgroud)

rest mongoose mongodb node.js express

1
推荐指数
1
解决办法
4605
查看次数

标签 统计

express ×1

mongodb ×1

mongoose ×1

node.js ×1

rest ×1