2015-08-28 63 views
2

幫助:火力地堡檢索由密鑰對象中的JavaScript API

我火力地堡的對象,因爲關鍵是OBJECTID和文檔API JS火力地堡不能從列表中恢復只有一個項目,它沒有辦法爲我恢復。

你能幫我嗎?

控制器

var rooms = Rooms.all(); 

     console.log('All Rooms:', rooms); 
     console.log('Rooms length:', rooms.length); 

     // New test room 
     if (!rooms) { 
      var objRooms = [ 
       { 
        cc: 'Business 1', 
        name: 'Chat 1', 
        city: 'Curitiba', 
        state: 'PR' 
       }, 
       { 
        cc: 'Business 2', 
        name: 'Chat 2', 
        city: 'Floripa', 
        state: 'SC' 
       } 
      ] 

      var objRoom = Rooms.save(objRooms); 
      console.log('ROOMID: ', objRoom.key()); 
     } 

服務

.factory('Rooms', function ($firebaseObject) { 
     // Might use a resource here that returns a JSON array 
     var ref = new Firebase(firebaseUrl); 
     var rooms = $firebaseObject(ref.child('rooms')); 

     return { 
      all: function() { 
       return rooms; 
      }, 
      get: function (roomId) { 
       // Simple index lookup 

       console.log('ROOMD:', rooms); 

       return rooms[ ref.child(roomId) ]; 
      }, 
      save: function (roomData) { 
       var obj = ref.child('rooms'); 

       var onComplete = function (error) { 
        if (error) { 
         console.log('Data could not be saved: ', error); 
        } 
        else { 
         console.log('Data saved successfully!'); 
        } 
       }; 

       return obj.push(roomData, onComplete); 
      } 
     } 
    }) 

輸出:

Chat Controller initialized! 
controllers.js:117 Object {params: Object, current: Object, $current: extend, transition: null}$current: extendcurrent: Objectget: (stateOrName, context)go: go(to, params, options)href: href(stateOrName, params, options)includes: includes(stateOrName, params, options)is: is(stateOrName, params, options)params: ObjectroomId: "-JxlCvzgbdkQfoA1Of78"__proto__: Objectreload: reload()transition: nulltransitionTo: transitionTo(to, toParams, options)__proto__: Object 
services.js:78 Selecting the room with id: -JxlCvzgbdkQfoA1Of78 
services.js:20 ROOMD: d {$$conf: Object, $id: "rooms", $priority: null} 
app.js:43 Logged in as : simplelogin:2 

工廠間是一個問題:

get: function (roomId) { 
      // Simple index lookup 

      console.log('ROOMS:', rooms); 
      console.log('ROOM specified:', ref.child(roomId).key()); 

      return rooms[ ref.child(roomId) ]; 
     }, 

[更新]

我創建過濾器對象數據工廠對象:

.factory('Objects', function() { 
     return { 
      filter: function (objectValues, objectKey) { 
       // to take an action after the data loads, use the $loaded() promise 
       objectValues.$loaded().then(function() { 
        // To iterate the key/value pairs of the object, use angular.forEach() 
        angular.forEach(objectValues, function (value, key) { 
         if (key === objectKey) { 
          console.log(objectValues[objectKey]); 
          return objectValues[objectKey]; 
         } 
        }); 
       }); 
      } 
     } 
    }) 

Rooms工廠,我編輯方法get並設置:

get: function (roomId) { 
    return Objects.filter(rooms, roomId); 
}, 

[更新] 我有一個基於圖像的數據庫:

enter image description here

我需要列表對象數據。

的JavaScript API

https://www.firebase.com/docs/web/api/

回答

2

你應該使用Angularfire提供了使用火力地堡與AngularJS一些有用的方法首先。你可以在這裏找到的文檔:

https://www.firebase.com/docs/web/libraries/angular/api.html

現在,你的問題是如何使用它的密鑰來訪問的單個項目。您可以通過只提供鏈接到該對象檢索時做的只是無論是$firebaseArray$firebaseObject(使用Angularfire API時):

http://myfirebase.firebase.io/blazing-heat-9118/rooms/ + roomId 

,然後將該URL傳遞給new Firebase()電話:

var ref = new Firebase('http://myfirebase.firebase.io/blazing-heat-9118/rooms/' + roomId); 

var room = $firebaseObject(ref); 

    // To take an action after the data has finished loading, use the $loaded() promise 
obj.$loaded().then(function(res) { 

    console.log(res); // res will be the room object 

    // To iterate the key/value pairs of the object, use angular.forEach() 
    angular.forEach(obj, function(value, key) { 
    console.log(key, value); 
    }); 
}); 

現在您將從數據庫中提取單個房間。

我建議通讀Angularfire文檔,因爲它包含一些處理數據的好方法。

+0

我不想在Angular中創建工廠來處理Firebase爲我帶來的數據。 –

+0

@FrancisRodrigues嗯?我的回答不包括創建工廠。需要新的Firebase()才能將信息從數據庫中提取出來。 – Chrillewoodz

+0

我用新圖片更新了問題。 –