如何在不覆盖的情况下添加到Firebase中的列表

时间:2016-03-30 02:31:02

标签: angularjs ionic-framework firebase angularfire

我正在尝试在我的应用中创建一个“收藏夹”部分,您点击按钮并将其添加到firebase中的用户收藏夹列表中。我正在使用离子平台。

我创建了一个工厂来处理他们进来的收藏夹。我使用getAuth()函数来获取唯一的userID,这样我就可以在用户登录时将其拉出来。这是我的尝试,但我没有得到我想要的结果,这简直就是:     < userid>:
{
      0:“fav1”
    1:“fav2”
}

.factory('Favourites',function($firebaseArray){
  var ref = new Firebase("https://experiencett.firebaseio.com/");
  var authData = ref.getAuth();
  var favs = $firebaseArray(new Firebase('https://experiencett.firebaseio.com/favourites/'+authData.uid+''));
 return {
   all: function() {
   return favs;
 },
 add: function(){
   var up=new Firebase('https://experiencett.firebaseio.com/favourites/');
   var usersref=up.child(authData.uid);
   usersref.push({3:"paria"});
},

1 个答案:

答案 0 :(得分:1)

当您致电function main() { alert("Welcome to the program"); var fatGrams; var calories; var percentage; getFatGrams(fatGrams); getCalories(fatGrams,calories); caloriesPercentage(fatGrams,calories); displayPercentage(percentage); } function getFatGrams(fatGrams) { fatGrams = prompt("Enter the number of fat grams in your food item"); while(fatGrams < 0){ alert("Error, the fat grams cannot be less than 0."); fatGrams = prompt("Enter the new number of fat grams."); } return fatGrams; } function getCalories(fatGrams,calories) { calories = prompt("Enter the number of calories in your food item."); while (calories < 9 || calories > (fatGrams * 9)){ alert("Error, the calories cannot be less than 9 or exceed the fat grams * 9"); calories = prompt("Enter the new number of calories"); } return calories; } function caloriesPercentage(fatGrams,calories){ percentage = (fatGrams * 9) / calories; alert("The amount of calories that come from fat is, " + percentage); return percentage; } function displayPercentage(percentage){ if(percentage < 0.3){ alert("The food is low in fat."); } else{ alert("The food is not too low in fat."); } } main(); alert("End of program"); 时,您正在生成唯一ID。虽然这对许多用例来说很好,但是因为你想要控制所写的路径,所以它并不好。

由于您已使用push()构建路径,因此只需使用child(authData.uid)进行更新即可:

update()

这将更新usersref.child(authData.uid).update({3: "paria"}); 的现有值或为3写下新值,而3下的所有其他键都不会被修改。

或者,如果您要替换/users/<uid>中已存在的数据,则可以使用users/<users>代替set()

这一点已在storing user data部分的Firebase JavaScript SDK中进行了介绍。 AngularFire文档中没有介绍它,因为Angular没有任何特定内容。