我是firebase的新手,我正在尝试将旧代码调整为现在已弃用的内容以及不适用的代码。我正在尝试编写一个更新一个"单个"使用现在批准的$ save()promise在我的数据源中记录,但它对我的数据源做了一些非常奇怪的事情。
我的函数(应该)允许您修改单个记录,然后更新帖子json数组。但是,它不会这样做,而是删除firebase服务器上的整个数据源,幸运的是我现在只使用testdata,因为一切都会消失。
$scope.update = function() {
var fb = new Firebase("https://mysource.firebaseio.com/Articles/" + $scope.postToUpdate.$id);
var article = $firebaseObject(ref);
article.$save({
Title: $scope.postToUpdate.Title,
Body: $scope.postToUpdate.Body
}).then(function(ref) {
$('#editModal').modal('hide');
console.log($scope.postToUpdate);
}, function(error) {
console.log("Error:", error);
});
}
有趣的是,我接着在控制台发出警告""我点击按钮:
使用Firebase中的数组索引存储数据可能会导致意外行为。有关详细信息,请参阅https://www.firebase.com/docs/web/guide/understanding-data.html#section-arrays-in-firebase。另请注意,您可能需要$ firebaseArray而不是$ firebaseObject。
(没有狗屎?)我在这里假设$ save()不是正确的调用,所以$ routeParams / $ firebase $ update()相当于修改数据和源代码的简单绑定?我花了好几个小时在这上面,并且真的不知道什么是正确的解决方案。
答案 0 :(得分:1)
除非您遗漏了其他代码,否则您的article
$ firebaseObject应该最有可能使用您之前创建的fb
变量。
var article = $firebaseObject(fb);
此外,您使用$save()
的方式不正确。您需要直接修改$ firebaseObject上的属性,然后在没有参数的情况下调用$save()
。 See the docs for more.
article.Title = $scope.postToUpdate.Title;
article.Body = $scope.postToUpdate.Body;
article.$save().then(...