Mongoose find function, is there a value for $in which would be true no matter what?(Mongoose Find函数,有没有一个$的值无论如何都是真的?)
本文介绍了Mongoose Find函数,有没有一个$的值无论如何都是真的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
很抱歉提出的问题表述不当。
代码如下:
module.exports.getUserByQuery = function (params, callback) {
if (params.nationality.length !== 0 && params.languages.length !== 0) {
User.find(
{
age: {
$gt: params.minAge,
$lt: params.maxAge,
},
nationality: { $in: paramas.nationality},
languages: { $in: params.languages },
},
callback
);
} else if (params.nationality.length === 0 && params.languages.length === 0) {
User.find(
{
age: {
$gt: params.minAge,
$lt: params.maxAge,
},
},
callback
);
} else if (params.nationality.length !== 0 && params.languages.length === 0) {
User.find(
{
age: {
$gt: params.minAge,
$lt: params.maxAge,
},
nationality: { $in: params.nationality },
},
callback
);
} else if (params.nationality.length === 0 && params.languages.length !== 0) {
User.find(
{
age: {
$gt: params.minAge,
$lt: params.maxAge,
},
languages: { $in: params.languages },
},
callback
);
}
};
如果网站用户没有在搜索引擎中选择值,Params.National和Language可以是空字符串数组。
我是否可以为它们设置一个值,使过滤表现得就像它不存在一样?
我基本上是在寻找一种方法来消除IF。
推荐答案
我认为您无法完全消除这些条件,但您可以将代码构建为更易于管理(例如):
let params = { minAge: 10, maxAge: 12, nationality: [ ], languages: [ ] }
const filterBuilder = function(params) {
const f1 = {
age: {
$gt: params.minAge,
$lt: params.maxAge
}
}
const f2 = { nationality: { $in: params.nationality } }
const f3 = { languages: { $in: params.languages } }
if (params.languages.length !== 0 && params.nationality.length !== 0) {
Object.assign(f1, f2, f3);
} else if (params.languages.length !== 0) {
Object.assign(f1, f3);
} else if (params.nationality.length !== 0) {
Object.assign(f1, f2);
}
return f1;
}
User.find(filterBuilder(params), callback);
这篇关于Mongoose Find函数,有没有一个$的值无论如何都是真的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:Mongoose Find函数,有没有一个$的值无论如何都是真的?
基础教程推荐
猜你喜欢
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 我什么时候应该在导入时使用方括号 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- 动态更新多个选择框 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- 响应更改 div 大小保持纵横比 2022-01-01