Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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
Javascript Firebase-将查询保存到JS中的对象/映射/数组_Javascript_Firebase_Firebase Realtime Database - Fatal编程技术网

Javascript Firebase-将查询保存到JS中的对象/映射/数组

Javascript Firebase-将查询保存到JS中的对象/映射/数组,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我有一个firebase实时数据库。我想编写一个查询,并将数据保存到数组中,稍后再使用。我能设法做到吗?这段代码运行得很好,只需要保存它以备将来使用。对象/贴图会很好,但数组也可以。 我的半代码在这里: map = new Map(); var rootRef = firebase.database().ref("locations/map"); rootRef.once("value", function(snapshot) { snapshot.forEach(function(chil

我有一个firebase实时数据库。我想编写一个查询,并将数据保存到数组中,稍后再使用。我能设法做到吗?这段代码运行得很好,只需要保存它以备将来使用。对象/贴图会很好,但数组也可以。 我的半代码在这里:

map = new Map();
var rootRef = firebase.database().ref("locations/map");
rootRef.once("value", function(snapshot) {
  snapshot.forEach(function(child) {
    console.log(child.key+": "+child.val().value);
    map.set(child.key, child.val().value);
  });
});
console.log(map);

很好,但如果我试一下

console.log(map.get(0));
没有定义。有必要将其用于:

 for (i = 0; i < someaarray.data.length; i++) {
  if (someaarray.data[i].id == map.get(id))
  {
    someaarray.data[i].value = map.get(value);
  }
}
for(i=0;i
您需要返回一个承诺,因为提取数据是无效的,因此请尝试以下操作:

function getData() {
return new Promise((resolve, reject) => {
let map = new Map();
var rootRef = firebase.database().ref("locations/map");
rootRef.on("value", function(snapshot) {
  snapshot.forEach(function(child) {
    console.log(child.key+": "+child.val().value);
    map.set(child.key, child.val().value);
    resolve(map);
   });
  });
 });
}
getData().then((value) => {
  console.log(value.get(0));
 });
});
然后,当需要使用
映射时,需要执行以下操作:

function getData() {
return new Promise((resolve, reject) => {
let map = new Map();
var rootRef = firebase.database().ref("locations/map");
rootRef.on("value", function(snapshot) {
  snapshot.forEach(function(child) {
    console.log(child.key+": "+child.val().value);
    map.set(child.key, child.val().value);
    resolve(map);
   });
  });
 });
}
getData().then((value) => {
  console.log(value.get(0));
 });
});
查看此处了解更多信息:


谢谢!我尝试了您的代码,但“console.log(value.get(0));”未定义:(是否
child.key
等于0?因为在
get()