【问题标题】:<firebase-query> error: "Cannot create property '$key' on string..."<firebase-query> 错误:“无法在字符串上创建属性 '$key'...”
【发布时间】:2016-07-22 19:01:10
【问题描述】:

我正在尝试使用polymerfire/firebase-query 来加载我使用Vaadin Expense Manager Demo 存储在Firebase 中的数据。具体来说,我正在尝试用&lt;firebase-query&gt;&lt;/app-indexeddb-mirror&gt; 的组合替换&lt;vaadin-pouchdb&gt; 元素。

https://github.com/vaadin/expense-manager-demo/blob/master/src/overview-page.html
<firebase-query
  id="query"
  log
  app-name="my-firebase"
  path="[[user.uid]]"
  data="{{expenses}}">
</firebase-query>

当我尝试加载页面时,我希望看到我的网格填充了测试数据;但相反,我收到以下错误。

控制台日志

firebase.js:284 Uncaught TypeError: Cannot create property '$key' on string 'foo'

firebase.js:284 Uncaught TypeError: Cannot create property '$key' on string 'new'

firebase.js:284 Uncaught TypeError: Cannot create property '$key' on number '123'

我希望通过&lt;firebase-query&gt; 传递给应用程序的{{expenses}} 的值如下:

expenses = [
  {
    total    : 123   ,
    status   : 'new' ,
    merchant : 'foo' ,
  },
]

什么可能导致此错误?为什么有一个属性'$key',试图被创建?等一下。可能是因为费用存储在我的 Firebase 中,所以没有与费用相关联的密钥?

编辑:

Firebase 中的数据如下所示:

my-firebase
│
└──my-userid-abc-123
   ├── merchant: "foo"
   ├── status: "new"
   └── total: 123

【问题讨论】:

  • 您能展示一下您在数据库中的实际数据是什么样的吗?你用数字键存储东西吗? firebase-query 旨在处理字符串键对象数据。
  • @MichaelBleigh:是的。你的直觉是正确的。我没有存储数据的密钥。 查看以上反映存储数据结构的编辑。 那么我该如何填充我的网格呢?如果我需要返回并使用密钥存储数据,请告诉我。从数据结构的角度来看,这听起来可能是最好的做法?
  • 看起来你可能想要firebase-document,它只会在路径中加载整个文档。我也强烈鼓励使用例如结构化您的数据。 /users/my-userid-123 而不是将用户直接放在根级别。然后你可以只做&lt;firebase-document path="/users/[[user.uid]]"&gt; 或让所有用户&lt;firebase-query path="/users"&gt;

标签: firebase polymer firebase-realtime-database polymer-1.0 polymerfire


【解决方案1】:

不支持在所有子级都具有原始(boolean, string, number) 值的位置使用&lt;firebase-query&gt;。请考虑将这些值嵌套在对象中。

【讨论】:

  • 什么!?!真的!?!感谢您的回答,但是谁设计的?
猜你喜欢
  • 1970-01-01
  • 2018-12-08
  • 1970-01-01
  • 2022-01-25
  • 2018-11-24
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 2022-12-04
相关资源
最近更新 更多