Node.js 没有要搜索的文本的条件查询
这是上一个问题的后续问题,以考虑代码。我想通过params,当有文本时,它就会工作,当没有文本时,我就得不到结果。如果没有文本,只有日期,则查询应返回日期=该值的所有文档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
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' } })