Javascript 在Firebase中获取并存储多维数组而不是JSON

Javascript 在Firebase中获取并存储多维数组而不是JSON,javascript,arrays,multidimensional-array,cloud,firebase,Javascript,Arrays,Multidimensional Array,Cloud,Firebase,我在Javascript中使用多维数组(不是JSON) var Ar = [ ['1','2013','A','Name1','1','1','3','3','1','2','3','4',''], ['2','2014','B','Name2','1','2','3','1','1','2','3','5',''], ['3','2015','C','Name3','1','2','4','4','1','2','5','4',''] ]; 要将阵列Ar发送或存储到Firebase云,

我在Javascript中使用多维数组(不是JSON)

var Ar = [
 ['1','2013','A','Name1','1','1','3','3','1','2','3','4',''],
 ['2','2014','B','Name2','1','2','3','1','1','2','3','5',''],
 ['3','2015','C','Name3','1','2','4','4','1','2','5','4','']
];
要将阵列Ar发送或存储到Firebase云,我使用:

var data = new Firebase("xxxx.firebaseIO.com");
data.set(Ar);
我经常使用这种2D数组形式

要从Firebase云获取或存储单个数据或阵列,我需要什么选项

  • 像刷新和与云同步阵列Ar
  • 将新数据存储到云Ar[2][3]=“新文本”
  • 从云获取值var x=Ar[2][3]
  • 希望你能帮忙


    感谢K

    如果您使用的是Angular,则可以在中回答此问题

    查找
    $save
    $add
    以将数据保存并添加到Firebase。要从数据库中获取值,只需分配一个变量,如

    var obj=$firebaseObject(ref)

    您可以像这样将数据从变量获取到DOM

    $scope.data=obj

    很简单


    您可以在数据到达工厂或服务内部的DOM之前对其进行操作,然后使用控制器获取或显示信息。

    如果使用Angular,则可以在中回答此问题

    var array = [
     ['1','2013','A','Name1','1','1','3','3','1','2','3','4',''],
     ['2','2014','B','Name2','1','2','3','1','1','2','3','5',''],
     ['3','2015','C','Name3','1','2','4','4','1','2','5','4','']
    ];
    
    var ref = new Firebase('https://xxxx.firebaseio.com/');
    
    ref.set(array);
    
    ref.on('value', function(snapshot) {
      var value = snapshot.val();
    
      console.log(value);  
      console.log(value[2][3]);
    });
    
    查找
    $save
    $add
    以将数据保存并添加到Firebase。要从数据库中获取值,只需分配一个变量,如

    var obj=$firebaseObject(ref)

    您可以像这样将数据从变量获取到DOM

    $scope.data=obj

    很简单

    您可以在数据到达工厂或服务内部的DOM之前对其进行操作,然后使用控制器获取或显示信息

    var array = [
     ['1','2013','A','Name1','1','1','3','3','1','2','3','4',''],
     ['2','2014','B','Name2','1','2','3','1','1','2','3','5',''],
     ['3','2015','C','Name3','1','2','4','4','1','2','5','4','']
    ];
    
    var ref = new Firebase('https://xxxx.firebaseio.com/');
    
    ref.set(array);
    
    ref.on('value', function(snapshot) {
      var value = snapshot.val();
    
      console.log(value);  
      console.log(value[2][3]);
    });
    
    上面的输出是:

    [["1", "2013", "A", "Name1", "1", "1", "3", "3", "1", "2", "3", "4", ""], 
     ["2", "2014", "B", "Name2", "1", "2", "3", "1", "1", "2", "3", "5", ""], 
     ["3", "2015", "C", "Name3", "1", "2", "4", "4", "1", "2", "5", "4", ""]]
    "Name3"
    
    每当数组的任何部分发生更改时,value事件将再次触发,并调用
    on('value')
    回调

    如果要更新阵列,有两个选项

    array[2][3] = "New Text";
    ref.set(array);
    
    这会将整个阵列发送到Firebase。另一种方法是直接更新数据库中[2][3]处的元素:

    ref.child(2).child(3).set("Newest Text");
    
    无论您使用这两种方法中的哪一种,都会再次调用('value')
    回调

    查看此jsbin以获得代码的工作版本:

    上面的输出是:

    [["1", "2013", "A", "Name1", "1", "1", "3", "3", "1", "2", "3", "4", ""], 
     ["2", "2014", "B", "Name2", "1", "2", "3", "1", "1", "2", "3", "5", ""], 
     ["3", "2015", "C", "Name3", "1", "2", "4", "4", "1", "2", "5", "4", ""]]
    "Name3"
    
    每当数组的任何部分发生更改时,value事件将再次触发,并调用
    on('value')
    回调

    如果要更新阵列,有两个选项

    array[2][3] = "New Text";
    ref.set(array);
    
    这会将整个阵列发送到Firebase。另一种方法是直接更新数据库中[2][3]处的元素:

    ref.child(2).child(3).set("Newest Text");
    
    无论您使用这两种方法中的哪一种,都会再次调用('value')
    回调


    查看此jsbin以了解代码的工作版本:

    您有什么问题?另外:您是否阅读了Firebase文档,特别是关于为什么阵列在分布式系统中通常是个坏主意的部分()?我知道Firebase中基本的JSON结构思想是如何实现的。有时您已经定义好了数组。如您所见,我用一个简单的命令data.set(Ar)发送整个数组;到云。为什么我不能使用另一个命令来执行相反的操作或将所有这些信息拉回来?我还注意到Firebase会自动在数组中的每个idem上放置索引号。索引数组是获取数据的非常快速和有效的方法。通过提供所有数据名,您需要进行复杂的名称搜索,而不是只提供简单的输入始终固定的x=Ar[2][3]交叉发布的索引编号:您有什么问题?另外:您是否阅读了Firebase文档,特别是关于为什么阵列在分布式系统中通常是一个坏主意的部分()?我知道Firebase中基本的JSON结构思想是如何实现的。有时您已经定义好了数组。如您所见,我用一个简单的命令data.set(Ar)发送整个数组;到云。为什么我不能使用另一个命令来执行相反的操作或将所有这些信息拉回来?我还注意到Firebase会自动在数组中的每个idem上放置索引号。索引数组是获取数据的非常快速和有效的方法。通过提供所有数据名,您需要进行复杂的名称搜索,而不是只提供简单的输入dex数字总是像x=Ar[2][3]交叉张贴一样固定:这很好,正是我要找的。非常感谢Frank这很好,正是我要找的。非常感谢Frank