首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在等待数据库时使用Node.js中的基本promise

如何在等待数据库时使用Node.js中的基本promise
EN

Stack Overflow用户
提问于 2018-12-07 03:45:21
回答 2查看 119关注 0票数 0

我刚接触Node.js (通常使用Java语言开发),但我正在尝试创建一个REST服务,该服务从firebase检索数据,然后将其作为JSON对象返回。

我对"promises“并不熟悉,在阅读了它们之后,我想我理解了前提,但它的实现让我感到困惑。

如何告诉我的方法等待从我的Firebase数据库中检索数据?

代码:

代码语言:javascript
复制
getUsers(): String {

    var x;

    cooksRef.once('value').then(function(snapshot){
      x = JSON.stringify(snapshot.val())
      console.log("x is: " + x);
    }, function(error){
      console.log("error was: " + error)
    });

   console.log("Now x is: " + x);

   return x;
  }

目前,我的代码打印出来:

代码语言:javascript
复制
Now x is: undefined
x is: {"R4DA34":{"age":31, "name": "example name"}}

我希望它等待并按顺序执行这些语句,这样我就可以将正确的数据返回给我的控制器。

代码语言:javascript
复制
x is: {"R4DA34":{"age":31, "name": "example name"}}
Now x is: {"R4DA34":{"age":31, "name": "example name"}}
EN

回答 2

Stack Overflow用户

发布于 2018-12-07 03:49:50

尝试node.js 7.8及更高版本中支持的ES8功能async/await:

代码语言:javascript
复制
async function getUsers(): String {

const x = await cooksRef.once('value').then(function(snapshot){
  x = JSON.stringify(snapshot.val())
  console.log("x is: " + x);
  return x;
}, function(error){
  console.log("error was: " + error)
});

console.log("Now x is: " + x);

return x;
}
票数 0
EN

Stack Overflow用户

发布于 2018-12-07 03:52:15

如果您不想使用async/await,则需要将代码放在then中,如下所示:

代码语言:javascript
复制
getUsers(): String {

  var x;

  return cooksRef.once('value').then(function(snapshot){
    x = JSON.stringify(snapshot.val())
    console.log("x is: " + x);

    return x;
  }, function(error){
    console.log("error was: " + error)
  });
}

如果您可以使用async/await

代码语言:javascript
复制
async getUsers(): String {

  const snapshot = await cooksRef.once('value');
  const x = JSON.stringify(snapshot.val())
  return x

}

pd:我不确定在nestJs中asyn的语法是否正确

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53658592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档