2016-11-23 101 views
0

我在服务器端构建了一个RESTful应用程序运行节点,如express和firebase-admin。我制作了一些API端点与我的Firebase项目数据库链接。如何使用Angular资源和firebase-admin检索Firebase密钥?

在客户端,我正在使用Angular资源来使用API​​。下面是我的路线文件,其中解决了名为“BeerService”资源服务的一部分:

.state('beers', { 
        url: '/beers', 
        templateUrl: 'app/beer/beer.html', 
        controller: 'BeerCtrl', 
        controllerAs: 'vm', 
        resolve: { 
         beers: function(BeerService) { 
          return BeerService.query(function(data) { 
           console.info(data); 
           return data; 
          }, function(error) { 
           console.error(error); 
           return error; 
          }); 
         } 
        } 
       }) 

它返回data并将其保存到beers。然后它被注入我的控制器并保存在一个名为vm.beers的全局变量中。在html上有一个ng-repeat(vm.beers中的啤酒)和{{beer}}。

问题:啤酒只显示来自对象的值。我如何获得这些节点的密钥?

这是console.info(data)从文件上面的输出(有一个在DB只是一个记录与关键-KXHTyo8AWFehyJ2iIY_):

console output

这是HTML:

<h5>GET /api/beers</h5> 
<button ng-click="vm.queryBeers()" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-button--accent"> 
    Refresh 
</button> 
<ul class="demo-list-item mdl-list"> 
    <li class="mdl-list__item" ng-repeat="beer in vm.beers"> 
     <span class="mdl-list__item-primary-content"> 
      {{beer}} 
     </span> 
    </li> 
    {{vm.beers}} 
</ul> 

这显示为:

screen

你能帮助我知道如何从数据中获得密钥(-KXHTyo8AWFehyJ2iIY_)吗?

+0

很好,没有人回答如何到达这里使用火力methods..so节点关键是一种选择,设定密钥的儿童在使用push方法像下面创建: 'saveBeer:功能(REQ ,res,next){ var ref = beersRef.push(); var key = ref.key; ref.set({ 键:键, 味精: '喝我', 水平:9000 },功能(错误){ 如果(错误){ res.sendStatus(400); }其他{ (200) } }); }' – gcfabri

回答

0

我在文档中找到了解决方案。这里是:

// Assume we have the following data in our database: 
{ 
    "users": { 
    "ada": { 
     "first": "Ada", 
     "last": "Lovelace" 
    }, 
    "alan": { 
     "first": "Alan", 
     "last": "Turing" 
    } 
    } 
} 

// Loop through users in order with the forEach() method. The callback provided 
// to will be called synchronously with a DataSnapshot for each child: 
var query = firebase.database().ref("users").orderByKey(); 
query.once("value") 
    .then(function(snapshot) { 
    snapshot.forEach(function(childSnapshot) { 
     // key will be "ada" the first time and "alan" the second time 
     var key = childSnapshot.key; 
     // childData will be the actual contents of the child 
     var childData = childSnapshot.val(); 
    }); 
});