[英]How to create a mongoose query that supports empty values and returns all
用戶有一個表單來填寫和搜索 mongoDB 集合中的文檔。 用戶不需要填寫表單的所有輸入,但用戶填寫的需要一起查詢。 用戶未填寫的輸入作為 "" 空字符串進入后端。
我的查詢是這樣的:
let cf = await Cf.find({
$and: [
{userId: userId},
{$and: [
{name: name == '' ? null : name},
{catg: catg == '' ? null : catg},
{value: value == '' ? null : value}
]}
]
});
因此,對於查詢,我設置了一個條件,如果值等於 "" 則將其更改為null
,但貓鼬實際上是在搜索空值。 是否有某種空占位符可以取回所有文檔? 如果我保留為空字符串或將其更改為undefined
它也不起作用。
如果用戶留下了一些空白字段,最好的方法是什么?
更新
使用mickl 的邏輯和一些調整,它完美地工作。 這是最終結果。
let query = {
$and: [
{userId: userId}
]
};
let subQuery = [];
if (name !== ''){
subQuery.push({name: name})
};
if (catg !== ''){
subQuery.push({catg: catg})
};
if (value !== ''){
subQuery.push({value: value})
};
if( name !== '' || catg !== '' || value !== ''){
query.$and.push({$and: subQuery})
};
let cf = await Cf.find(query);
如果該值為空,則它不能包含在您的查詢中,請在點擊.find()
之前嘗試應用此查詢構建邏輯:
let userId = 1, name = 'a', catg = '', value = ''; let query = { userId: userId }; if(name !== ''){ query.name = name; } if(catg !== ''){ query.catg = catg; } if(value !== ''){ query.value = value; } console.log(query);
let cf = await Cf.find(query);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.