为啥我无法在猫鼬查询中获取字符串的值?
Posted
技术标签:
【中文标题】为啥我无法在猫鼬查询中获取字符串的值?【英文标题】:why am I unable to get value of string in mongoose query?为什么我无法在猫鼬查询中获取字符串的值? 【发布时间】:2021-10-24 14:17:44 【问题描述】:我在将base64字符串解码成JSON后得到数据,是这样的。
List1: [ 'mk singh', 'saurav kashsyap' ],
List2: [
labelName: 'Location', values: ['India','America','Japan'] ,
labelName: 'gender', values: ['male']
]
我需要 List2 的第二个元素,即 labelName: 'gender', values: ['male'] 并且如果我想从 userProfiles 中找到所有用户,其中字段为 labelName 的值(来自 List2 上方),并且值是来自相应 labelName'values 数组(来自 List2 上方)的任何内容。 这将等同于 userProfiles('Location':$in:['India','America','Japan'] 这是 userProfiles 架构:
"_id" : "6123e7ahdhdfdj334733",
"name" : "Mohit Kumar",
"gender" : "male",
"Location" : "India",
,
"_id" : "6123e7ahdhdfdj334731",
"name" : "saurav Kashyap",
"gender" : "male",
"Location" : "Nepal",
,
"_id" : "6123e7ahdhdfdj334720",
"name" : "Shaline",
"gender" : "female",
"Location" : "america",
,
这是我的代码
app.get("/getresult", (req, res) =>
let b64string = req.query.filters;
let buf = Buffer.from(b64string, 'base64');
let asciiData = buf.toString('ascii'); //into ascii character
let parseData = JSON.parse(`$asciiData`); // parsed JSON string
let field = parseData.List2[1].labelName; // gender
let value = parseData.List2[1].values; //['male']
user_profiles.find(
[field]: $in:[value]
, (err, result) =>
if (!err)
res.send(result);
)
);
但我得到一个空数组(结果)。我不知道我在哪里做错了。 请帮忙。
【问题讨论】:
【参考方案1】:您的 value
变量已经是一个数组,因此您需要将代码更改为:
user_profiles.find(
[field]: $in: value // instead of $in: [value]
【讨论】:
我已经采纳了您的建议并修改了 '' let parseData = JSON.parse(asciiData) '' 。现在它工作正常。谢谢以上是关于为啥我无法在猫鼬查询中获取字符串的值?的主要内容,如果未能解决你的问题,请参考以下文章