Как выполнить запрос мангуста в nodejs

Я новичок в nodeJS и JS.

Мне нужно получить данные из коллекции мангустов с помощью findone и сохранить их в переменной. Код ниже сохраняет значение в resultarray, но не в Memindex. Не знаю, как хранить в Memindex.

memindex = Manufacturer.findOne({name: result[key].name}, function(err, resultarray) {
console.info("resultarray", resultarray);});

Причина, по которой мне нужно значение в Memindex, заключается в том, что мне нужно использовать это в другом состоянии.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
224
3

Ответы 3

попробуйте так:

var memindex;

Manufacturer.findOne({name: result[key].name},function(err, resultarray) {
    console.info("resultarray", resultarray);
    memindex = resultarray;
});

Используйте функции вместо изменения глобальных переменных:

const memindex = await Manufacturer.findOneAsync({name: result[key].name});

Поскольку это асинхронная функция, вы, возможно, захотите рассмотреть обещания, находящиеся в Promises и / или async / await.

В предыдущем ответе. Вместо глобальной инициализации переменной и последующего изменения ее значения внутри функции используйте саму функцию для возврата данных и их присвоения.

Arbaz Siddiqui 30.08.2018 15:35

Да, я знаю, но, как указал OP, он новичок в JS, у него может не быть контекста обещаний мангуста и асинхронности в целом. Это общий ответ для присвоения значения, возвращаемого функцией.

Arbaz Siddiqui 30.08.2018 15:37

Эта версия - лучший ответ, поскольку предлагает другое решение. +1

Pogrindis 30.08.2018 15:51

Установка на данный момент сопоставляет два других ответа, которые по какой-то причине просят вас изменить способ присвоения переменных ..

Ваш исходный код почти готов. Просто в своей функции обратного вызова вы не возвращаете результаты запроса.

memindex = Manufacturer.findOne({name: result[key].name}, function(err, resultarray) {
    console.info("resultarray", resultarray);
    return resultarray;
});

В первом параметре findOne находится ваш поисковый фильтр, во втором - функция, которая будет вызываться после завершения ответа. В этом примере мы возвращаем данные вызывающей стороне, которой в данном случае является memindex.

findOne Ссылка

Другие вопросы по теме