在 Firebase 中获取并存储非 JSON 的多维数组

Get and store multidimensional array not JSON in 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 Cloud 我使用:

var data = new Firebase("xxxx.firebaseIO.com");
data.set(Ar);

我经常使用这种二维数组形式。

我有什么选择可以从 Firebase Cloud 获取或存储个人数据或数组?

  1. 喜欢用云端刷新和同步数组 Ar
  2. 云存储新数据Ar[2][3] = "New Text"
  3. 从云端获取价值 var x = Ar[2][3]

希望能帮到你

谢谢 K

如果您使用 Angular,可以在 Angular Firebase API docs 中回答。

查找 $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"

任何时候数组的任何部分发生变化,值事件将再次触发并调用 on('value' 回调。

如果你想更新数组,你有两个选择。

array[2][3] = "New Text";
ref.set(array);

这会将整个数组发送到 Firebase。另一种方法是直接在数据库中更新 [2][3] 处的元素:

ref.child(2).child(3).set("Newest Text");

无论您使用这两种方法中的哪一种,on('value' 回调都会被再次调用。

查看此 jsbin 以获得代码的工作版本:http://jsbin.com/nawatetuya/edit?js,console