当有比赛显示时,我尝试检索所有孩子。
我在控制台中打印了该值,并且几秒钟后我的代码在那儿运行良好,但是当我在代理中将其作为消息打印时,它在响应之前显示为不可用,因为它不等待。
这是我的代码:

function retrieveContact(agent) {
  var query = admin.database().ref("/contacts").orderByKey();
  query.once("value")
    .then(function(snapshot) {
        snapshot.forEach(function(childSnapshot) {
            var key = childSnapshot.key;
            var childName = childSnapshot.child('name').val();
            if (agent.parameters.name == childName) {

                console.log('find ' + childName);
                agent.add('The email address for ' + childName + ' is ' + childSnapshot.child('email').val());

            }
            // console.log('testMode'+childName);
        }); //// .then
    }); //// .once }


所以,我如何等待我的响应,然后让代理显示结果?
如何在代码中包含promise概念?

最佳答案

您没有显示完整的Handler函数,但是如果您正在执行异步操作(例如从firebase数据库读取),则必须返回Promise。这是Handler Dispatcher知道如何在Promise完成之前将响应返回给用户的方式。

就您而言,它可能很简单

return query.once("value")
  // etc

10-07 19:58