2014-10-28 3 views
1

я не найти способ обновления элемента (Вы можете найти код here) Я пытался с этим кодомFirebase angularfire как обновить элемент

app.factory('Items', function($firebase,FIREBASE_URL) { 
    var ref = new Firebase(FIREBASE_URL); 
    var items = $firebase(ref.child('items')).$asArray(); 
    var Item = { 
     all: function() { 
      return items; 
     }, 
     create: function (item) { 
      return items.$add(item); 
     }, 
     get: function (itemId) { 
      return $firebase(ref.child('items').child(itemId)).$asObject(); 
     }, 
     update: function (itemId, item) { 
      return $firebase(ref.child('items').child(itemId)).update(item); 
     }, 
     delete: function (item) { 
      return items.$remove(item); 
     } 
    }; 
    return Item; 
}); 

, но он не работает , Вы можете мне помочь, пожалуйста?

Я попытался после комментария Франк ван Puffelen к

update: function (item) { 
    return items.$save(item); 
} 

, но он не работает и получить меня

объект {состояние = 2, значение = "Неверная запись; может д ... ц ключ: [объект Object] "}

Вы можете увидеть workish пример по адресу:

https://lalista.firebaseapp.com

ответ

4

Если у вас есть явная функция update, вы не используете двустороннюю/трехстороннюю привязку данных Angular/AngularFire. В этом случае вы можете также перепускной AngularFire для обновления и звоните Firebase в JavaScript API напрямую:

update: function (itemId, item) { 
    return ref.child('items').child(itemId).set(item); 
} 

Обратите внимание, что я называю set вместо update, потому что это выглядит, как вы пытаетесь заменить существующие данные Firebase могли бы хранить для элемента.

JavaScript API Firebase и AngularFire прекрасно сочетаются здесь, поэтому вам не нужно беспокоиться о том, что данные не синхронизируются.

+0

еще раз спасибо :) за точку, но это моя ошибка, я перепутал обычную огненную базу с угловым огнем, так что же делать с обновлением угловым огнем? – Whisher

+1

Я пытался использовать, как ваш ответ, но у меня ошибка: Firebase.set failed: Первый аргумент содержит недопустимый ключ ($$ conf). Ключи должны быть непустыми строками и не содержать «.», «#», «$», «/», «[» Или «]» – Whisher

+0

Это похоже на то, что вы обновили ('$$ conf') 'или что-то в этом роде. Можете ли вы поделиться фрагментом кода, который вы использовали? –

2

Ни для кого подходит к этому вопросу с использованием новых API-интерфейсов AngularFire $firebaseArray и $firebaseObject методы являются:

$firebaseArray.$save(recordOrIndex)

var list = $firebaseArray(ref); 
    list[2].foo = "bar"; 
list.$save(2).then(function(ref) { 
    ref.key() === list[2].$id; // true 
}); 

$firebaseObject.$save()

var obj = $firebaseObject(ref); 
obj.foo = "bar"; 
obj.$save().then(function(ref) { 
    ref.key() === obj.$id; // true 
}, function(error) { 
    console.log("Error:", error); 
}); 
Смежные вопросы