javascript - 无法让 Firebase update() 使用提供的对象

标签 javascript angularjs firebase angularfire

好吧,经过多次尝试和错误,我必须尝试在这里提问。 我正在尝试更新 Firebase 条目,我的代码如下所示,

这是来 self 的 service.js:

//This dosn't work
var updateItem = function (item, id) {
    var ref  = new Firebase(FIREBASE_URI + '/lessons/' + id);
    ref.$update(item);
}

//This works (items is a ref to new Firebase(FIREBASE_URI + '/lessons/');
var addItem = function (item) {
    items.$add(item);
}

这是来 self 的 Controller :

$scope.updateLesson = function (item) {
    LessonsService.updateLesson(item, id);
}

我收到的错误是这样的:

错误:Firebase.set 失败:第一个参数包含无效键 ($id)。键必须是非空字符串,并且不能包含“.”、“#”、“$”、“/”、“[”或“]”

我传入的对象如下所示:

Object {
    $id: "-JLIUvVMLqoCVgHaed9f", 
    $bind: function, $add: function, $save: function,     $set: function…}
    $add: function (item) {
    $auth: function (token) {
    $bind: function (scope, name, defaultFn) {
    $child: function (key) {
    $getIndex: function () {
    $getRef: function () {
    $id: "-JLIUvVMLqoCVgHaed9f"
    $off: function (type, callback) {
    $on: function (type, callback) {
    $remove: function (key) {
    $save: function (key) {
    $set: function (newValue) {
    $transaction: function (updateFn, applyLocally) {
    $update: function (newValue) {
    createDate: "2014-04-24T11:29:42.692Z"
    desc: "test"
    somemorevalues: "here"
}

我尝试对对象执行 JSON.stringify 并得到如下所示的漂亮结果:

 {
  createDate: "2014-04-24T11:29:42.692Z",
  desc: "test",
  somemorevalues: "here"
 }

但是当我通过变量传递它时它不会接受它。 (错误:Firebase.update 失败:第一个参数必须是包含要替换的子对象的对象。)如果我直接将其作为字符串传递,它就可以工作(?!!!)。这是变量中完全相同的信息。我到底错过了什么?!截至目前,我正在构建自己的对象,如下所示:

 var newItem = {
     title: item.title,
     desc: item.desc,
     ingress: item.ingress,
     workarea: item.workarea,
     years: {val: item.years.val},
 }

并将其传递给 firebase,它可以工作,但并不理想,因为它是“静态的”。

最佳答案

根据 the API 使用 angularFire 。阅读Angular+Firebase Overview一个好的底漆。

本质上,不需要将 angularFire 对象传递到 Firebase ref(这将不起作用,因为键名称中可能没有 $)并自己调用 update/set,只需使用 $set/$update 方法已在 $firebase 对象上可用:

var ref = $firebase(URL);
ref[id].desc = 'foo';
ref.$save(id).then(onComplete);

关于javascript - 无法让 Firebase update() 使用提供的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23268771/

相关文章:

java - 从 Firebase 数据库读取数据时,如何知道访问的每个查询结果?

ios - 证书有效时 InvalidApnsCredential

javascript - 如何通过javascript中的自定义属性的特定值获取元素?

javascript - 我尝试向 <a> 添加 Bootstrap 下拉按钮,但下拉菜单不起作用。我该怎么做呢?

javascript - 如何根据点击获取对应对象的值

javascript - orderBy 不对以下 ngRepeat 表中的项目进行排序

javascript - Vue搜索过滤默认显示所有项目

javascript - jQuery 通过其元素事件更新对象

html - 如何在使用 css 网格时优化大量 ng-repeats

javascript - AngularJS,将这两种方法合二为一