条件查询,没有要搜索的文本

时间:2015-12-01 19:15:49

标签: node.js mongoose

这是对上一个问题的跟进,以允许代码。我想通过params,当有文本然后它工作,当没有文本然后我得不到结果。如果没有文本而只有日期,则查询应返回date =该值的所有文档。

var query;

if(!req.query.text){
    console.log("no text")
    query = Record.find({})
} else {
    console.log("YES text")
    query = Record.find(
        { $text : { $search : req.query.text } },
        { score : { $meta: "textScore" } }
    ) 
}




if(req.query.year){
    var years = req.query.year.split(',');
    if(years.length < 2){
        query = query.where('date.year', req.query.year)
    } else {
        query = query.where('date.year').gt(years[0]).where('date.year').lt(years[1]);
    }
}
if(req.query.loc === 1){
    query = query.exists('loc')
}
query
    .select('title date.year')
    .sort({ score : { $meta : 'textScore' } })
    .limit(50)
    .exec(function(error, results) {
        res.json(results)
 }); 

我的noob控制台日志记录正在运行,所以if语句有效但查询构建器似乎不喜欢我正在做的事情。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。这是这一行,没有文字,没有文字分数。简单。

.sort({ score : { $meta : 'textScore' } })