【问题标题】:How to return one array from firebase-database list of data如何从 firebase-database 数据列表中返回一个数组
【发布时间】:2017-11-26 07:55:34
【问题描述】:

我正在使用 firebase 和 javascript。从两个表执行查询后,我试图从 firebase-database 返回一个数组。当我 console.log 我的数据时,我会为每一位数据获得一个单独的数组和对象。

var userId = 'hirerId';
var chatIdRef = firebase.database().ref("members");
var chatsRef = firebase.database().ref("chats");

chatIdRef.child(userId).on('child_added', snap => {
    chatsRef.child(snap.key).once('value', snap => {
     items = [];

       items.push({
         text: snap.val().text,
         chatId: snap.key
       });
         console.log(items);

      });
     });

这会记录两个单独的数组和对象:[{"text":"How are you","chatId":"chatId"}] [{"text":"Hi friend","chatId":"chatId2"}]

我想要的结果是[{"text": "How are you","chatId":"chatId"}, {"text":"Hi friend","chatId":"chatId2"}]

这是我的数据结构: data structure

我怎样才能达到我想要的结果?谢谢

【问题讨论】:

  • 看看Array.concat()

标签: javascript arrays firebase react-native firebase-realtime-database


【解决方案1】:

只需使用 apply.push 即可加入任意数量的数组。但是,您可能想要移动您的 items = [];函数外的数组。这就是导致您的问题的原因。每次推送/函数触发时,您都在清空数组。

var ar1 = [{
  "text": "How are you",
  "chatId": "chatId"
}];
var ar2 = [{
  "text": "Hi friend",
  "chatId": "chatId2"
}];

ar1.push.apply(ar1, ar2);

console.log(ar1);

【讨论】:

  • 谢谢。在函数之外移动 items=[] 有效。
猜你喜欢
  • 1970-01-01
  • 2012-11-29
  • 2014-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-11
  • 2017-05-21
相关资源
最近更新 更多