Firebase函数返回未定义的值,即使是promises也是如此

时间:2018-04-04 21:41:09

标签: javascript node.js firebase asynchronous promise

我是Firebase的新手,我是一个使用" ProductID"获取产品信息的简单程序。 这是层次结构: PRODUCT CHILD

问题是,当我使用此函数时,它返回未定义的值。我知道它是异步的,我尝试过添加承诺,但仍然徒劳无功。在这里:

function getProduct(prID){
    var db = admin.database();
    var ref = db.ref("server/products/" + prID);
    let rData = '';
    ref.on("value", function(snapshot) {
    rData = snapshot.val();
    }, function (errorObject) {
    console.log("The read failed: " + errorObject.code);
});
return rData;

使用相同的值调用相同的函数会返回产品,但是要调用不同的参数值,它将返回undefined。 我尝试过使用(在函数 getProductPromise(prID)中),我将上面的函数更改为:

function getProductPromise(id) {
    var db = admin.database();
    var ref = db.ref("server/products/" + id);
    let rData = '';
    return ref.once('value').then(function(snapshot) {
    return snapshot.val();
  });
}

它仍然返回未定义的值。可能的方法是确保返回某些值。 感谢。

1 个答案:

答案 0 :(得分:0)

在第一个示例中,您似乎遇到了一些范围问题,因此不确定它是否会像您期望的那样工作。承诺是你最好的选择。您可以尝试以下方式:

'[type="radio"]'