首页 > 解决方案 > 返回值是未定义的。可以告诉我应该怎么做才能修复它?

问题描述

store 的值是 undefined.colud 告诉我我做错了什么。我应该使用 Async 和 await 还是 Promise ?

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);

这里 store 的值是未定义的。没有适当的回报

标签: javascriptmongodbtypescriptasynchronousmean-stack

解决方案


您不能将结果写入存储并在之后立即看到它,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/awaitPromise以及如何将带有回调的函数转换为异步函数。


推荐阅读