【发布时间】:2016-07-22 19:01:10
【问题描述】:
我正在尝试使用polymerfire/firebase-query 来加载我使用Vaadin Expense Manager Demo 存储在Firebase 中的数据。具体来说,我正在尝试用<firebase-query> 和</app-indexeddb-mirror> 的组合替换<vaadin-pouchdb> 元素。
<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'
我希望通过<firebase-query> 传递给应用程序的{{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而不是将用户直接放在根级别。然后你可以只做<firebase-document path="/users/[[user.uid]]">或让所有用户<firebase-query path="/users">
标签: firebase polymer firebase-realtime-database polymer-1.0 polymerfire