Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Firebase在promise激发之前等待加载数据库数据_Node.js_Firebase_Firebase Realtime Database_Promise_Onload - Fatal编程技术网

Node.js Firebase在promise激发之前等待加载数据库数据

Node.js Firebase在promise激发之前等待加载数据库数据,node.js,firebase,firebase-realtime-database,promise,onload,Node.js,Firebase,Firebase Realtime Database,Promise,Onload,有人能解释一下如何在Firebase中使用我的代码吗 var p = new Promise(function(resolve, reject) { var data=null; var ref = db.ref("/"); ref.once("value", function(snapshot) { data = snapshot.val(); }

有人能解释一下如何在Firebase中使用我的代码吗

        var p = new Promise(function(resolve, reject) {
            var data=null;

            var ref = db.ref("/");
            ref.once("value", function(snapshot) {
                data = snapshot.val();

            });

            data.onload = function() {
                console.log(data+" onload");

                if (data!=null) {
                    resolve('Success!');
                }
                else {
                    reject('Failure!');
                    console.log('failed');
                }

            }

        });

        p.then(function() { 
            /* do something with the result */
            console.log(data+" done");
        }).catch(function() {
            /* error :( */
            console.log("error");
        });

我想等到我从
data=snapshot.val()得到“回音”在调用下一个函数之前。正确的方法是什么?我显然不理解承诺。我正在努力学习教程

承诺直接内置到firebase中

var ref = firebase.database().ref();

ref.once('value')
  .then(function (result) {
    // This only happens after the data has been returned
    console.log(result.val());
  })
  .catch(function (err) {
    // This is where errors land
    console.log('Error', err.code);
  });

firebase的第3版已经涵盖了您,因此您不需要创建容器承诺。:)

看看你的代码,你需要复习一下firebase!忽略承诺代码,其余代码看起来完全错误我的意思是,您的
var p
可以是
var p=db.ref(“/”).once(“值”)-因为
一次
返回一个承诺。。。然后是
p.then(函数(结果){…对结果做点什么…})