2016-04-24 95 views
1

我正在POS系統中工作,並且我正在使用Firebase作爲後端。我需要做的一個報告是「大多數/少銷售的產品」。Firebase數據結構想法

我有我的結構是這樣/sales/

"1234": { 
    "date": 1234567890, // timestamp 
    "products": { 
     "coca-cola-clasica-355-ml": { 
      "quantity": 3, 
      "salesPrice": 500, 
      "costPrice": 400 
     }, 
     "coca-cola-clasica-600-ml": { 
      "quantity": 6, 
      "salesPrice": 900, 
      "costPrice": 700 
     } 
    }, 
    "subtotal": 6400, 
    "total": 6400 
}, 
"5678": { 
    "date": 1234567890, // timestamp 
    "products": { 
     "taqueritos-chile-picante": { 
      "quantity": 2, 
      "salesPrice": 100, 
      "costPrice": 80 
     }, 
     "coca-cola-clasica-600-ml": { 
      "quantity": 4, 
      "salesPrice": 900, 
      "costPrice": 700 
     } 
    }, 
    "subtotal": 200, 
    "total": 200 
} 

而且/產品/:

{ 
    "coca-cola-clasica-355-ml": { 
     "costPrice": 350, 
     "name": "Coca Cola Clasica 355 ml", 
     "salesPrice": 500, 
     "stock": 99, 
     "supplier": "femsa-coca-cola", 
     "tax": false, 
    }, 
    "coca-cola-clasica-600-ml": { 
     "costPrice": 700, 
     "name": "Coca Cola Clasica 600 ml", 
     "salesPrice": 900, 
     "stock": 99, 
     "supplier": "femsa-coca-cola", 
     "tax": false, 
    }, 
    "taqueritos-chile-picante": { 
     "costPrice": 80, 
     "name": "Taqueritos Chile Picante", 
     "salesPrice": 100, 
     "stock": 500, 
     "supplier": "dinant", 
     "tax": true 
    } 
} 

所以,如果我要得到「最暢銷的產品」現在我不得不遍歷所有的銷售和添加數量,每次我找到一個產品,然後訂購結果,並得到最賣的產品,這很糟糕。

我有兩個思路來解決這個:

  1. 一個屬性添加到/products/像「soldTimes」和每一個產品銷售的時間加量。
  2. 創建第三個實體電話,如soldProducts,並計算每次客戶購買時每個產品的銷售數量。

這2種方法有效嗎?我在Firebase中丟失了什麼?

感謝您的幫助。

回答

0

在NoSQL中,通常最終會根據應用程序想要使用它的方式來建模數據。因此,如果您的應用需要列出銷售量最高的產品,則應考慮將該列表存儲在數據庫中。

productLeaderboard: { 
    coca-cola-clasica-355-ml: { 
     totalQuantity: 3, 
     totalSalesPrice: 500, 
     totalCost: 400, 
     totalProfit: 100 
    }, 
    ... 
} 

現在找到最暢銷的產品,你可以簡單地做:

ref.child('productLeaderboard').orderByChild('totalQuantity').limitToFirst(3).on(... 
+0

謝謝!這絕對是更好,更快的閱讀。 – fmontes