首页 > 解决方案 > 如何使用密钥检索 Firebase 中的子数据?

问题描述

我是 firebase 的新手。我想与 key 一起获取子数据。我在 nodejs 环境中尝试过以下代码。

  var firebase = require("firebase");

    firebase.initializeApp({
       databaseURL: "https://some.firebaseio.com/"
    });


    var customer = firebase.database().ref().child('customer');

    const fname = "name";
    const lname = "title";
    customer.orderByChild("partnerFirstName").equalTo(fname).on('child_added', function (snapshot) {
       console.log(snapshot.val());

       var fn = snapshot.val().partnerFirstName;

       var custdata = snapshot.val();

       console.log(custdata);
       console.log("FirstName:"+fn);

       if (custdata.partnerFirstName === fn) {
         console.log(custdata);

       }


     });

输出如下

    {
      createdAt: '2018-03-20T23:25:35.212Z',
      partnerEmail: 'beard@yahoo.com',
      partnerFirstName: 'name',
      partnerGender: 'male',
      partnerLastName: 'title',
      partnerPhone: '444-602-4444',
      profilePicture: 'assets/profile_icon.png',
      uid: 'x99wl8kkmJSENpNdVMXTXCh7amy2' }
      FirstName: name

在这种情况下,我们没有得到记录的键值,但是 firstname 没有任何错误。

但是,当我们尝试以下代码时,密钥与数据一起出现,但名字未定义

 var customer = firebase.database().ref().child('customer');

        const fname = "Name";
        const lname = "Title";
        customer.orderByChild("partnerFirstName").equalTo(fname).on('value', function (snapshot) {
           console.log(snapshot.val());

           var fn = snapshot.val().partnerFirstName;

           var custdata = snapshot.val();

           console.log(custdata);
           console.log("FirstName:"+fn);
           if (custdata.partnerFirstName === fn) {
             console.log(custdata);

           }


         });

输出如下

{ '-L84iSPyr9bPvnJZ6BgV':
   { 
     createdAt: '2018-03-20T23:25:35.212Z',
     partnerEmail: 'beard@yahoo.com',
     partnerFirstName: 'name',
     partnerGender: 'male',
     partnerLastName: 'title',
     partnerPhone: '444-602-4444',
     profilePicture: 'assets/profile_icon.png',
     uid: 'x99wl8kkmJSENpNdVMXTXCh7amy2' } }
     FirstName: undefined

如何获取子数据和密钥?

标签: javascriptnode.jsfirebasefirebase-realtime-database

解决方案


要获取密钥,请尝试以下操作:

var ref = firebase.database().ref("customer").orderByChild("partnerFirstName").equalTo(fname);
ref.once("value").then(function(snapshot) {
snapshot.forEach(function(child){
var key = child.key; 
var partnerName=child.val().partnerFirstName;

  });
});

在上面,您在 的子项中进行迭代customer,然后使用var key = child.key;


推荐阅读