【问题标题】:AngularFire can't save objectAngularFire 无法保存对象
【发布时间】:2016-02-25 20:49:16
【问题描述】:

我正在尝试将对象保存到 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);
                });

            });

我看不出我做错了什么......

问候

【问题讨论】:

  • 为了清楚起见,您在控制台日志中看到了正确的值吗? console.log("一些属性 -> " + obj.testProperty);这向您展示了您期望的价值?
  • 将该行更改为 console.log("This is the object -> " + JSON.stringfy(obj)) 并且在控制台我有 -> [{"$value":1," $id":"codigoDoCliente","$priority":null},{"$value":"人名","$id":"criadoPor","$priority":null},{"$value" :"20160225","$id":"dataDaOcorrencia","$priority":null},{"$value":"一些信息...","$id":"descricaoDaOcorrencia","$priority": null},{"$value":4,"$id":"produtoAssociado","$priority":null},{"$value":1,"$id":"tipoDeOcorrencia","$priority":空}] .
  • 请不要向 cmets 添加代码,edit 你的问题要包含它。

标签: angularjs firebase angularfire


【解决方案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);
        });

    });

【讨论】:

    【解决方案2】:

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

    通常,我们将所有数据存储在唯一标识符下,例如用户 ID 或随机哈希,以避免冲突。或者,您可以使用 $add ,Firebase 将自动生成一个唯一密钥并将其存储在该位置下。 firebaseURL/Profiles/唯一 ID/对象

    【讨论】:

    • 我要保存的对象不是新对象,它是从服务器上以前保存的数组中编辑的。
    【解决方案3】:

    我刚遇到这个问题。我的原因是有一个未定义的函数参数。我不小心包含了来自我复制和粘贴的另一个服务的参数,而没有将该服务添加为依赖项。 例如:

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

    那个users 参数是来自一个我没有包含在.module 依赖数组[] 中的依赖,所以它是未定义的并且抛出了我的整个服务,这给了我这个错误:“错误: 无效记录;可以确定未定义的键。"

    我是个新手,如果我能以某种方式更好地描述它,请随时告诉我。 ;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-03
      • 2018-08-17
      • 1970-01-01
      • 2014-10-03
      • 2018-04-26
      • 2021-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多