在angularfire中$ set和$ save

时间:2014-09-25 12:56:37

标签: angularjs firebase angularfire

在angularfire中使用$ set和$ save有什么区别? 此外,在以下情况下,发送到服务器的数据量是否存在差异:

我可以拥有一个firebase对象:

$rootScope.projectgroups= pgsync.$asObject();

在$ rootScape中定义,只需调用

即可从每个控制器保存对它的更改
$rootScope.projectgroups.$save();

我还可以使用$ set保存对服务器的更改,并定义子对象的确切位置:

$firebase(pgref.child($rootScope.prgrid +
"/projects/")).$set($rootScope.prid,
$rootScope.projectgroups[$rootScope.prgrid].projects[$rootScope.prid]);

在服务器的数据事务上使用$ set更便宜的方式为子对象分配新数据而不是在整个对象上使用$ save吗?或者angularfire会以某种方式将对象与对象历史进行比较,并仅将最后一次本地更改推送到服务器?

1 个答案:

答案 0 :(得分:2)

  

在angularfire中使用$ set和$ save有什么区别?

$set是为了方便$firebase服务而存在的。无需先在本地下载任何数据即可调用它。

同步对象/数组上存在

$save。它在内部调用$set,可以通过查看源代码来看到(了解lib的好方法)。它通过将同步对象/数组转换为JSON数据然后将其发送到$set来保存它们。

  

此外,在以下情况下发送到服务器的数据量是否存在差异

完全没有

  

使用$ set更便宜的数据事务向服务器分配新数据,而不是在整个对象上使用$ save吗?

如果您没有在本地同步数据,那就便宜了。如果您已经下载了一个集合,则它们是等效的。

  

或者angularfire会以某种方式将对象与对象历史记录进行比较,并仅将最后一次本地更改推送到服务器?

它没有,但Firebase在内部处理这些复杂性,因此您(和AngularFire)可以只编码并感到高兴。