AngularFire无法保存对象

时间:2016-02-25 20:49:17

标签: angularjs firebase angularfire

我正在尝试将对象保存到Firebase。我可以读取对象及其属性,但无法保存。错误回调结果 - >错误:记录无效;可以确定未定义的键。

                var ref = new Firebase("https://myapp.firebaseio.com/myObjects/" + objectKey)
            var obj = $firebaseObject(ref);

            obj.$loaded().then(function () {

                console.log("Some property -> " + obj.testProperty); 

                obj.testProperty= "someValue";

                obj.$save().then(function (ref) {
                    console.log("Saved !");

                }, function (error) {
                    console.log("Error:", error);
                });

            });

我无法看到我做错了什么......

此致

3 个答案:

答案 0 :(得分:1)

您需要首先获取数组索引,然后保存一些属性。

var ref = new Firebase("https://myapp.firebaseio.com/myObjects/");
    var obj = $firebaseArray(ref);
    var index = obj.$indexFor(objectKey)
    obj.$loaded().then(function () {

        console.log("Some property -> " + obj.testProperty); 

        obj[index].testProperty= "someValue";

        obj.$save(index).then(function (ref) {
            console.log("Saved !");

        }, function (error) {
            console.log("Error:", error);
        });

    });

答案 1 :(得分:0)

$ save不会自动生成密钥,因此您可能已经存储了重复的objectKey。

通常,我们将所有数据存储在唯一标识符下,例如用户ID或随机散列,以避免冲突。或者您可以使用$ add和Firebase自动生成唯一键并将其存储在该位置下。 firebaseURL / Profiles / unique id / object

答案 2 :(得分:0)

我刚遇到这个问题。我的是由一个未定义的函数参数引起的。我不小心包含了我复制和粘贴的另一个服务中的参数,而没有将该服务作为依赖项添加。 e.g:

angular
  .module('appTasks', [])
  .factory('tasks', [
    '$firebaseObject',
    '$firebaseArray',
    function(users, $firebaseObject, $firebaseArray) { ...my service code... },]);

users参数意味着来自我未包含在.module依赖关系数组[]中的依赖关系,所以它未定义并丢弃了我的整个服务,这给了我错误:“错误:记录无效;可以确定未定义的密钥。”

我有点新手,所以如果我能以某种方式更好地描述它,任何人都可以随时告诉我。 ;)