2016-07-22 100 views
1

我試圖使用Vaadin Expense Manager Demo來加載存儲在Firebase中的數據。具體而言,我試圖用<firebase-query></app-indexeddb-mirror>的組合替換<vaadin-pouchdb>元素。

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> 

當我嘗試加載網頁,我希望看到我的網格填充測試數據;但是,我得到以下錯誤。

的console.log

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'

{{expenses}}我希望通過<firebase-query>交付給應用程序的值如下:

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

什麼可以創建這個錯誤?爲什麼有一個屬性'$key',試圖創建?等一下。難道這是因爲它們存儲在我的Firebase中沒有與費用關聯的密鑰?

編輯:

下面是數據的模樣在火力地堡:

my-firebase 
| 
- my-userid-abc-123 
    |- merchant: "foo" 
    |- status: "new" 
    |- total: 123 
+1

你可以顯示你的數據庫中的實際數據是什麼樣子嗎?你用數字鍵存儲東西嗎? 'firebase-query'被設計用來處理字符串鍵入的對象數據。 –

+0

@MichaelBleigh:是的。你的直覺是正確的。我沒有存儲數據上的密鑰。 *請參閱上面反映存儲數據結構的編輯。*我如何填充我的網格?如果我需要返回並用鑰匙存儲數據,請告訴我。從數據結構的角度來看,這聽起來可能是最好的嗎? – Mowzer

+1

它看起來像你可能想'firebase文檔'這將只加載整個文檔的路徑。我也強烈建議用你的數據構建你的數據。 '/ users/my-userid-123',而不是直接將用戶放在根目錄下。然後你可以做''或者讓所有用戶'' –

回答

2

上,所有的孩子都有原始(boolean, string, number)值是不支持的地方使用<firebase-query>。請考慮將這些值嵌套在對象中。

+1

什麼!?!真!?!感謝您的回答,但是誰設計的呢? –

相關問題