如何使用 Mobx / Firebase 更新 Material-UI table

How to update Material-UI table with Mobx / Firebase

我需要使用从 Firebase 获取的 MobX 存储更新 Material-UI table。到目前为止,table 使用 Firebase 数据更新了 'symbol' 列,但其他列是通用的。

let id = 0;
function createData(symbol, date, cost, quote, pl) {
  id += 1;
  console.log(symbol, date, cost, quote, pl)
  return { id, symbol, date, cost, quote, pl };
}

var returnArr = [];
export function getOpenTrades(user){
  db.ref('/users/' +user+ '/mocktrades/holdings/').once("value", function(snapshot) {
    snapshot.forEach(function(childSnapshot) {
      console.log('childSnapshot',childSnapshot.val()) //   <----------- shown below 
      let newData = createData(childSnapshot.key, '01012001', 0.01, 100, 100-0.01)
      returnArr.push(newData);
    })
  })
  console.log('returnArr',returnArr)
  return(
      returnArr
  )
}

请帮我直接获取开盘日期、开盘价格和数量。如您所见,该符号是用 childSnapshot.key 引用的。这三个项目在一个推送中;我们可以使用 .next() 之类的东西访问该推送 ID ... 而不必知道推送 ID 是什么吗?

试试 createData(childSnapshot.key, childSnapshot.dateOpened, childSnapshot.priceOpened childSnapshot.quantity);

解决方案是在 childSnapshot 上执行 forEach:

let id = 0;
function createData(symbol, date, cost, quote, pl) {
  id += 1;
  console.log(symbol, date, cost, quote, pl)
  return { id, symbol, date, cost, quote, pl };
}



var returnArr = [];
export function getOpenTrades(user){
  db.ref('/users/' +user+ '/mocktrades/holdings/').once("value", function(snapshot) {
    snapshot.forEach(function(childSnapshot) {

      childSnapshot.forEach(function(item) {
        var itemVal = item.val()
        let newData = createData(childSnapshot.key, itemVal.dateOpened, itemVal.priceOpened, 100, 100-itemVal.priceOpened)
        returnArr.push(newData);
      })
    })
  })
  console.log('returnArr',returnArr)
  return(
      returnArr
  )
}