Возвращаемое значение не определено.Не могли бы вы сказать, что я должен сделать, чтобы это исправить?

#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 и как преобразовать функцию с обратным вызовом в асинхронную функцию.