这是对上一个问题的跟进,以允许代码。我想通过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语句有效但查询构建器似乎不喜欢我正在做的事情。
答案 0 :(得分:0)
我解决了这个问题。这是这一行,没有文字,没有文字分数。简单。
.sort({ score : { $meta : 'textScore' } })