Node.js 没有要搜索的文本的条件查询

Node.js 没有要搜索的文本的条件查询,node.js,mongoose,Node.js,Mongoose,这是上一个问题的后续问题,以考虑代码。我想通过params,当有文本时,它就会工作,当没有文本时,我就得不到结果。如果没有文本,只有日期,则查询应返回日期=该值的所有文档 var query; if(!req.query.text){ console.log("no text") query = Record.find({}) } else { console.log("YES text") query = Record.find( { $tex

这是上一个问题的后续问题,以考虑代码。我想通过params,当有文本时,它就会工作,当没有文本时,我就得不到结果。如果没有文本,只有日期,则查询应返回日期=该值的所有文档

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)
 }); 
var查询;
如果(!req.query.text){
console.log(“无文本”)
query=Record.find({})
}否则{
console.log(“是文本”)
query=Record.find(
{$text:{$search:req.query.text},
{score:{$meta:“textScore”}
) 
}
if(请求查询年份){
var years=req.query.year.split(',');
如果(年长<2){
query=query.where('date.year',req.query.year)
}否则{
query=query.where('date.year').gt(年[0])。where('date.year').lt(年[1]);
}
}
if(req.query.loc==1){
query=query.exists('loc')
}
查询
.select('title date.year')
.sort({score:{$meta:'textScore'}})
.限额(50)
.exec(函数(错误、结果){
res.json(结果)
}); 

我的noob控制台日志正在工作,因此if语句可以工作,但查询生成器似乎不喜欢我所做的工作。

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

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