0

我已经使用了Firebase几个月了,并且在使用angularjs和anfularfire之前,我已经很好,在解释问题之前,让我给你一个快速背景:我目前使用不同的控制器为用户提供注册植物种类并将其用作项目以创建交互式花园的应用程序。为了节省从任何控制器的数据库,我存储在基准到$范围使用angularjs保存firebase数据库的问题

var rootRef = firebase.database().ref(); 
$scope.database = $firebaseObject(rootRef) 

所以当我要做出改变或添加一个对象,我不喜欢这样写道:

$scope.example_function = function(i){//supposing 'i' is a string 
    $scope.element[e] = i //supposing that 'e' contains a string 
    $scope.database.$save() 
} 

有时候这会起作用,有时候它不会保存firebase,尤其是在编辑数据库中的现有对象或将元素添加到特定对象时。这真的很令人沮丧,因为它不会抛出错误或什么,我甚至尝试删除我想改变的路径,然后再将它与新信息一起存储。此外,我尝试与每个控制器中的数据库的本地引用,但没有...任何人都知道我还能如何做这项工作?

另外。我很确定数据库和应用程序之间的连接是好的,我现在需要存储大量的物种,问题是当我想编辑物种的信息或添加一个URL来获取图像。

回答

0

我认为将整个数据库绑定到范围并不是一个好主意。这将是非常难以扩展。

请记住,当您请求参考并将其发送到$firebaseObject时,它将注册以更改事件,这将开始同步整个数据库,这可能会很大。

对于您所遇到的问题,它看起来像要绑定数据库引用的$scope一个database财产,但在你的example_function你申请值的element财产。所以也许你正在寻找的修复是这样的:

function example_function(i) { 
    $scope.database.element = i; 
    $scope.database.$save(); 
}