mongooose $ text search如果为null

时间:2017-08-02 19:59:35

标签: mongodb mongoose

我有这样的查询。

Resource.find({
            isResource:true,
            $text: {$search: req.query.search}
        }).lean().exec(function(err, resources){
        if(err){
            next(err);
            return;
        }else{
            res.send(resources);
        }
    });

有时,用户不想输入搜索查询,因此只返回所有真实的资源。但是,如果我为$ search属性提供空值,则会出错。如果我提供一个空字符串,它将不返回任何项目,因为它正在使用空字符串进行搜索。

当req.query.search为空或为空时,$ search是否有条件方式处理空值而不必添加另一个省略$ text字段的查询?

1 个答案:

答案 0 :(得分:1)

不,但通过以编程方式汇编查询,在查询中省略该术语很简单:

let query = { isResource: true };
if (req.query.search) {
    query.$text = {$search: req.query.search};
}
Resource.find(query).lean().exec(function(err, resources){
    if(err){
        next(err);
        return;
    }else{
        res.send(resources);
    }
});