Firebase的child_更改提供了太多数据

Firebase的child_更改提供了太多数据,firebase,Firebase,我使用的是node.js版本的firebase。我正在使用“child_changed”上的一个ref.on来观察一个满是用户的路径,以及他们自己的路径。我的问题是我得到的信息太多了。考虑这些日志,这只是快照中的一个安慰。Val: userRefChanged { Name: 'user', approvedApps: { '-JCGaWvRuMp1oqikxyCl': 'yes', _type: 'yes', demo: 'yes' }, tokens:

我使用的是node.js版本的firebase。我正在使用“child_changed”上的一个ref.on来观察一个满是用户的路径,以及他们自己的路径。我的问题是我得到的信息太多了。考虑这些日志,这只是快照中的一个安慰。Val:

userRefChanged
{ Name: 'user',
  approvedApps: 
   { '-JCGaWvRuMp1oqikxyCl': 'yes',
     _type: 'yes',
     demo: 'yes' },
  tokens: 
   { '-JKpNYqpsi6rTPSxLSzT': 
      { sessionID: '-JKouK9ziLsVbkGGtRWo',
        token: 'w2ylvaMOX045H673oNZTEPUjJeplz9L4fTRpaVMJWeA' } } }

userRefChanged
{ Name: 'user',
  approvedApps: 
   { '-JCGaWvRuMp1oqikxyCl': 'yes',
     _type: 'yes',
     demo: 'yes' },
  tokens: 
   { '-JKpNYqpsi6rTPSxLSzT': 
      { appID: '-JCGaWvRuMp1oqikxyCl',
        sessionID: '-JKouK9ziLsVbkGGtRWo',
        token: 'w2ylvaMOX045H673oNZTEPUjJeplz9L4fTRpaVMJWeA' } } }

userRefChanged
{ Name: 'user',
  approvedApps: 
   { '-JCGaWvRuMp1oqikxyCl': 'yes',
     _type: 'yes',
     demo: 'yes' },
  tokens: 
   { '-JKpNYqpsi6rTPSxLSzT': 
      { appID: '-JCGaWvRuMp1oqikxyCl',
        rand: 0.8973847175948322,
        sessionID: '-JKouK9ziLsVbkGGtRWo',
        token: 'w2ylvaMOX045H673oNZTEPUjJeplz9L4fTRpaVMJWeA' } } }
我更愿意将其视为输出,因为它只表示整个路径中的更改:

userRefChanged
{ Name: 'user',
  tokens: 
   { '-JKpNYqpsi6rTPSxLSzT': 
      { sessionID: '-JKouK9ziLsVbkGGtRWo' } } }

userRefChanged
{ Name: 'user',
  tokens: 
   { '-JKpNYqpsi6rTPSxLSzT': 
      { appID: '-JCGaWvRuMp1oqikxyCl' } } }

userRefChanged
{ Name: 'user',
  tokens: 
   { '-JKpNYqpsi6rTPSxLSzT': 
      { rand: 0.8973847175948322 } } }

我不确定这里是否有问题。这看起来更像是对当前API行为的反馈。Firebase“child_changed”事件将在该子树中的任何时间触发数据更改,并将根据设计为您提供子数据的新状态,而不仅仅是先前状态和新状态之间的差异。但您的文档中指出,相反,Rob。。。传递给回调的DataSnapshot将包含新的子内容。嗯,是的,它有新的子内容,但它也有旧的。因为它有旧数据,所以我不能只在快照包含我感兴趣的更改时才执行操作。我必须保留一份单独的副本并进行比较,或者大幅增加我需要管理的on语句的数量。@JonThompson-问题不清楚,但看起来是令牌路径在改变。您可能需要考虑对数据进行非授权化,并将令牌数据存储在类似路径/令牌/$用户ID /…通过这种方式,您可以在/tokens/上保留on语句,而不必担心approvedApps等,同时如果需要,仍然可以通过$userId访问该语句。实际上,这是一种规范化模式。非规范化是我现在所拥有的。