Javascript 如何修复TypeError:无法读取属性';推动';未定义的

Javascript 如何修复TypeError:无法读取属性';推动';未定义的,javascript,firebase,google-cloud-functions,Javascript,Firebase,Google Cloud Functions,我正在尝试遍历firebase中的所有用户, 并仅从特定参数创建json, 但我得到了这个错误: TypeError:无法读取未定义的属性“push” 我怎样才能修好它? 谢谢 temp是一个空对象。要推送到该元素的属性,首先必须检查它是否存在(并设置为数组): admin.database(){ var jsonArray='{}'; snapshot.forEach(\u child=>{ 让现金=_child.child(“player_cash”); 让uid=\u child.key;

我正在尝试遍历firebase中的所有用户, 并仅从特定参数创建json, 但我得到了这个错误:

TypeError:无法读取未定义的属性“push”

我怎样才能修好它? 谢谢


temp是一个空对象。要推送到该元素的属性,首先必须检查它是否存在(并设置为数组):

admin.database(){
var jsonArray='{}';
snapshot.forEach(\u child=>{
让现金=_child.child(“player_cash”);
让uid=\u child.key;
让name=_child.child(“player_name”);
var temp=JSON.parse(jsonArray);

temp[uid]=temp[uid]| |【】//temp是一个空对象。要推送到该元素的属性,首先必须检查它是否存在(并设置为数组):

admin.database(){
var jsonArray='{}';
snapshot.forEach(\u child=>{
让现金=_child.child(“player_cash”);
让uid=\u child.key;
让name=_child.child(“player_name”);
var temp=JSON.parse(jsonArray);

temp[uid]=temp[uid]| |【】//我不知道为什么要解析
jsonArray
,而不只是创建它(不可变?)。
无论如何,它是一个空对象,您尝试将
推到其中的一个键。如果该键不存在,则需要创建该键。
也许你应该这样做:

admin.database().ref("players").once('value', (snapshot, y) => {

        var jsonArray = '{}';

        snapshot.forEach(_child => {

           let cash = _child.child("player_cash");
           let uid = _child.key;
           let name = _child.child("player_name");

            var temp = JSON.parse(jsonArray);
            temp[uid] = temp[uid] || []; // create the key if its not already there
            temp[uid].push({"id":uid,"cash":cash});
            jsonArray = JSON.stringify(temp);
        });

        response.send(jsonArray);
}

我不知道为什么要解析
jsonArray
,而不只是创建它(不变性?)。
无论如何,它是一个空对象,您尝试将
推到其中的一个键。如果该键不存在,则需要创建该键。
也许你应该这样做:

admin.database().ref("players").once('value', (snapshot, y) => {

        var jsonArray = '{}';

        snapshot.forEach(_child => {

           let cash = _child.child("player_cash");
           let uid = _child.key;
           let name = _child.child("player_name");

            var temp = JSON.parse(jsonArray);
            temp[uid] = temp[uid] || []; // create the key if its not already there
            temp[uid].push({"id":uid,"cash":cash});
            jsonArray = JSON.stringify(temp);
        });

        response.send(jsonArray);
}

您得到的错误是因为对象没有push方法

你可以把事情简单化

admin.database().ref("players").once('value', (snapshot, y) => {
    var jsonArray = {};

    snapshot.forEach(_child => {

       let cash = _child.child("player_cash");
       let uid = _child.key;
       let name = _child.child("player_name");

       jsonArray[uid] = {"id":uid,"cash":cash};
    });

    response.send(jsonArray);
}
其结果将是:

{
  'id_1': { id: 'id_1', cash: 10 },
  'id_2': { id: 'id_2', cash: 20}
}
[
  { id: 'id_1', cash: 10 },
  { id: 'id_2', cash: 20}
]

现在我建议您使用数组而不是对象来保存数据库的结果

admin.database().ref("players").once('value', (snapshot, y) => {
    var jsonArray = [];

    snapshot.forEach(_child => {

       let cash = _child.child("player_cash");
       let uid = _child.key;
       let name = _child.child("player_name");

       jsonArray.push({"id":uid,"cash":cash});
    });

    response.send(jsonArray);
}
其结果将是:

{
  'id_1': { id: 'id_1', cash: 10 },
  'id_2': { id: 'id_2', cash: 20}
}
[
  { id: 'id_1', cash: 10 },
  { id: 'id_2', cash: 20}
]

这将更容易处理。

您得到的错误是因为对象没有push方法

你可以把事情简单化

admin.database().ref("players").once('value', (snapshot, y) => {
    var jsonArray = {};

    snapshot.forEach(_child => {

       let cash = _child.child("player_cash");
       let uid = _child.key;
       let name = _child.child("player_name");

       jsonArray[uid] = {"id":uid,"cash":cash};
    });

    response.send(jsonArray);
}
其结果将是:

{
  'id_1': { id: 'id_1', cash: 10 },
  'id_2': { id: 'id_2', cash: 20}
}
[
  { id: 'id_1', cash: 10 },
  { id: 'id_2', cash: 20}
]

现在我建议您使用数组而不是对象来保存数据库的结果

admin.database().ref("players").once('value', (snapshot, y) => {
    var jsonArray = [];

    snapshot.forEach(_child => {

       let cash = _child.child("player_cash");
       let uid = _child.key;
       let name = _child.child("player_name");

       jsonArray.push({"id":uid,"cash":cash});
    });

    response.send(jsonArray);
}
其结果将是:

{
  'id_1': { id: 'id_1', cash: 10 },
  'id_2': { id: 'id_2', cash: 20}
}
[
  { id: 'id_1', cash: 10 },
  { id: 'id_2', cash: 20}
]
这将更容易处理