本文介绍了复制$ firebaseObject并将其保存到不同的位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的应用程序正在使用$ firebaseObject我的火力得到的对象。使用具有与此对象两个选项,更改它并保存在对象的变化或改变它并将其保存为一个新的版本。

In my application i'm getting an object from my firebase using $firebaseObject. The use has two options with this object, change it and save the changes in the object or change it and save it as a new version.

我的问题是获得第二个选项。对于第一个,我可以简单地使用$ save()和它的作品完美,但到目前为止,我还没有能够使对象的副本,并将其保存在不同的位置在我的火力点。

My problem is getting the second option to work. For the first i can simply use $save() and it works perfectly but so far i haven't been able to make a copy of the object and save it in a different location in my firebase.

到目前为止,我曾尝试:

So far i have tried:


  • 保存实际对象在不同的​​位置(错误:Firebase.push失败:第一个参数包含在物业无效键($$ CONF))

  • 使用设angular.copy($ firebaseObject),使对象的副本(错误:'长'的吸气称为对象没有实现接口的存储上)

  • ,因为我的目标不是原始的$ firebaseObject(使用$值给出不确定的,看的)

  • 从$ firebaseObject在JavaScript制作一个单独的对象,并手动复制所有值

第3个选项失败(错误codeS显示的选项),最后一个选项的作品,但不是一个真正的选择,因为对象可以有不同的领域。

The first 3 options failed (error codes are shown with the options) and the last option works but is not really an option because the object can have different fields.

有谁知道这个问题的解决方案?

Does anyone know a solution for this problem?

推荐答案

您可以用$ firebaseObject的$ value字段。

You can use $value field of $firebaseObject.

例如:

var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com");
var FBObj1 = $firebaseObject(ref.child('child'));
ref.child('newChild').set(FBObj1.$value);

编辑:

由于这仅适用于原语,你可以尝试这样的事:

Since this only works for primitives, you can try something like this:

function getObject(obj) {
    var newObj = {};
    for (var key in obj) {
       if (key.indexOf('$') < 0 && obj.hasOwnProperty(key)) {
          newObj[key] = obj[key];
       };
    }
    return newObj;
}

和使用FBObj1。$值的getObject(FBObj1)insetad

and use getObject(FBObj1) insetad of FBObj1.$value

这篇关于复制$ firebaseObject并将其保存到不同的位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-11 14:39