почему я не могу получить значение строки в запросе мангуста?

#javascript #node.js #json #mongodb #mongoose

Вопрос:

Я получаю данные после декодирования строки base64 в JSON, и это выглядит так.

 {
  List1: [ 'mk singh', 'saurav kashsyap' ],
  List2: [
    { labelName: 'Location', values: ['India','America','Japan'] },
    { labelName: 'gender', values: ['male'] }
  ]
}
 

Мне нужен 2-й элемент List2, который является { Имя метки: ‘пол’, значения: [‘мужчина’]},
и если я хочу найти всех пользователей из профилей пользователей, у которых есть поле в качестве значения имени метки (из приведенного выше списка 2), а значение-что-либо из соответствующего массива значений имени метки (из приведенного выше списка 2).
которые будут идентичны профилям пользователей(«Местоположение»:{$в:[«Индия»,»Америка»,»Япония»]}
Вот схема пользовательских профилей:

 
   { "_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] }
}
 

Комментарии:

1. Я применил ваше предложение, а также изменил » пусть ParseData = JSON.parse(asciiData)». Теперь все работает нормально. Спасибо