【问题标题】: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);
        }
    })
});

但我得到一个空数组(结果)。我不知道我在哪里做错了。 请帮忙。

【问题讨论】:

    标签: javascript node.js json mongodb mongoose


    【解决方案1】:

    您的 value 变量已经是一个数组,因此您需要将代码更改为:

    user_profiles.find({
        [field]: { $in: value } // instead of { $in: [value] }
    }
    

    【讨论】:

    • 我已经采纳了您的建议并修改了 '' let parseData = JSON.parse(asciiData) '' 。现在它工作正常。谢谢
    猜你喜欢
    • 2016-06-03
    • 2020-08-13
    • 2021-01-21
    • 2022-11-13
    • 1970-01-01
    • 2020-06-12
    • 2013-05-08
    • 2021-01-17
    • 1970-01-01
    相关资源
    最近更新 更多