首页 > 解决方案 > 如何在没有 firebase 生成随机 ID 的情况下 push() - Webapp

问题描述

这是代码,set() 将不起作用,因为我想添加更多名称和值,因为当我想从程序中删除时,我不知道自动生成的 id。是否有任何不会生成此 ID 的替代 push() 方法?

  //Firebase
  var database = firebase.database();
  var ref_income = database.ref('Income');
  var ref_expense = database.ref('Expense');
  //Add month tracker for firebase
  var now = new Date();
  var months = ["January","February","March","April","May","June","July","August","September","October","November","December"];
  var month = now.getMonth();
  var ref_budget = database.ref('Budget/' + months[month]);
  //To eliminate income or expense

  return {
    addItem: function(type, des, val){
      var newItem,
          ID;

      // Create new ID
      if(data.allItems[type].length > 0){
        ID = data.allItems[type][data.allItems[type].length-1].id+1;
      } 
      else {
        ID = 0;
      }

      // Create new item based on "inc" or "exp" type
      if(type === "exp"){
        newItem = new Expense(ID,des,val);
        //Identifying using indexes to determine the parameters of the object 
        var key_des = Object.keys(newItem)[1];
        var key_val = Object.keys(newItem)[2];
        //Object including descritption as name and income as value to be pushed to firebase
        var Expense_data = {
          [newItem[key_des]]: newItem[key_val]
        }
        //Checking on console whether Firebase has recieved it
        console.log(Expense_data)
        //Adding the objects into firebase
        ref_expense.push(Expense_data)
      } 

      else if(type === "inc") {
        newItem = new Income(ID,des,val);
        var key_des = Object.keys(newItem)[1];
        var key_val = Object.keys(newItem)[2]
        //Object including descritption as name and income as value to be pushed to firebase
        var Income_data = {
          [newItem[key_des]]: newItem[key_val]
        }
        //Checking on console whether Firebase has recieved it
        console.log(Income_data);
        //Adding the objects into firebase
        ref_income.push(Income_data)
      }
      // Push it into our data structure (Not for firebase)
      data.allItems[type].push(newItem);
      // Return the new element
      return newItem;
    },

deleteItem: function(type,id,des){
      var ids,
          index;

      ids = data.allItems[type].map(function(el){
        return el.id;
      });

      index = ids.indexOf(id);

      if(index !== -1){
        data.allItems[type].splice(index, 1);
      }
    },

这就是 firebase 显示的内容,我将无法知道 id -M2CsPaog ...:

在此处输入图像描述

标签: javascriptfirebasefirebase-realtime-database

解决方案


推荐阅读