#javascript #mongodb #typescript #asynchronous #mean-stack
#javascript #mongodb #typescript #асинхронный #означает-стек
Вопрос:
Значение хранилища не определено.colud скажите мне, что я сделал не так. Должен ли я использовать Async и ждать или обещать?
var store = db.read(collectionName, (status, data) => {
//database read function
if (status) {
names.listOfData = data;
var send = names;
console.log("send---->", send); // send value here is what I need to return.
return send; // Getting required data for send. Problem here is returning it and storing it in store.
} else {
return null;
}
});
console.log(«store—>», store);
Здесь значение хранилища не определено. Нет должного возврата
Комментарии:
1. Какой модуль вы используете
Ответ №1:
Вы не можете записать результат в хранилище и сразу увидеть его там после db.read
, потому db.read
что не ждет, когда обратный вызов будет завершен, и не возвращает данные из него в качестве возвращаемого значения.
Вы должны обернуть этот вызов в new Promise
. Это может выглядеть так:
var store = await (new Promise(resolve, reject) => {
db.read(collectionName, (status, data) => {
//database read function
if (status) {
names.listOfData = data;
var send = names;
console.log("send---->", send); // send value here is what I need to return.
resolve(send);
} else {
resolve(null);
}
});
});
Пожалуйста, прочитайте больше об асинхронных функциях, async/await
, Promise
и как преобразовать функцию с обратным вызовом в асинхронную функцию.