前端页面如下:
用vue写的,默认查询发送给后台的数据如下:
email:"",
mis:"",
phone:"",
username:"",
后台node写的,接收之前还是空字符串,如何在数据库中默认查询出所有数据呢?是把以下数据默认都查询出来,而不是制定符合字段为空字符串的相对应字段??
有没有像如下mysql的语句,判断参数是否为空,全部为空就查全部,有不为空的就带条件查询
前端页面如下:
用vue写的,默认查询发送给后台的数据如下:
email:"",
mis:"",
phone:"",
username:"",
后台node写的,接收之前还是空字符串,如何在数据库中默认查询出所有数据呢?是把以下数据默认都查询出来,而不是制定符合字段为空字符串的相对应字段??
有没有像如下mysql的语句,判断参数是否为空,全部为空就查全部,有不为空的就带条件查询
var query={};
if(email){
query.email=email
}
if(username){
query.username=username
}
//其他字段同样处理。
意思就是,在判断不为空时再组装限制条件。
不知道楼主解决问题了没有,遇到同样需求通过百度来到这里,搞了好久有了个解决方案,希望可以帮到后面遇到同样问题的人,这里的话我的查询条件是必须要传入年和月,日期为空返回当前年份月份下的所有数据,通过前端传过来的字段判断,代码如下
let day=ctx.query.day==""?{}:{day:ctx.query.day}
const result = await Wages.find({
'$or':[
{'$and':[
{year:query.year},
{month:query.month},
day
]},
// {workerName:query.workerName}
]
}).skip(page * pageSize).limit(pageSize)
今天遇到了相同的问题,用的解决方案是可以用正则
let regexpTitle = new RegExp(keyWord, 'i')
title: {
$regex: regexpTitle
},
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
问题描述的不是很清楚
如果你想做的事情是: 当前端传入的数据为空字符串时,在查询时不对此字段做限制,只对前端传了非空的字段进行限制的话, mongodb的find方法是需要传一个给定值的,传空字符串 会匹配此字段为空的记录, 你需要在执行db查询操作之前,
在nodejs代码中判断字符串是否为空,然后再执行查询语句。
不知是否帮到你,可以留言让我进一步了解你的问题。
补充回答:
以nodejs的express框架action请求为例:
以上代码只是帮你打个样,仅对于email这一个字段的查询, 当输入为空字符串时,直接将查询条件设为了空对象,因此不对任何字段做限制输出查询结果;如果email字段里有货,则在查询条件中限制email字段必须符合输入值。
有问题请回复。