2016-12-07 106 views
1

我目前正在開發一個Web應用程序,我們使用可穿戴設備來監視一些重要參數。爲了進行集成測試,我使用了fitbit。 該應用程序使用angular/javascript編寫,數據庫來自cloudant。 我的問題是:你如何保持數據庫條目的更新?我想每隔兩個小時從可穿戴設備請求數據,並更新當天已存在的條目,而不是創建一個新的條目來防止重複。如何更新數據庫條目而不是創建新條目

到目前爲止,我已經想到了兩件事情:在一個變量

  1. 店今天的數據,尤其是數據庫條目更新每隔幾個小時,並在0:00清除變量的ID。
  2. 每次更新之前獲取所有條目並檢查是否有今天的日期條目。如果是這樣得到所述條目的ID並更新它,否則創建一個新的

我對任何一種解決方案都不滿意。

在此先感謝

+0

我覺得有什麼像'替換成'用於那種數據庫,也許選項1或類似redis和cron的用戶,他們每天做一次你的選擇2。 – vivoconunxino

+0

我更喜歡第一種解決方案,但有點不同。對於每個條目,您必須接收回調並在上次插入時存儲。在插入新數據時,您應該檢查日期變量的日期。關於這個比較,你可以決定做什麼。 –

回答

3

在Cloudant/CouchDB的更新現有的文件都可以做,但你打開自己衝突。對於使用Cloudant的許多「IoT」類型場景,爲每個樣本創建新文檔實際上都是一種很好的方法。然後,您可以使用視圖來實現數據。你的文件看起來是這樣的:

{ 
    "timestamp": "2016-12-01T13:25:02.000Z", 
    "type": "pressure", 
    "value": 110.0 
} 

然後使用一個設計文件發出的數據,沿

function(doc) { 
    if (doc && doc.timestamp && doc.value && doc.type) { 
     var ts = Date.parse(doc.timestamp); 
     emit([doc.type, ts], doc.value); 
    } 
} 

這裏更多的信息行:https://cloudant.com/blog/introduction-to-document-conflicts-part-three/

+0

您的示例適用於血壓或血氧飽和度等數據,您可以在設定時間獲得「靜態」值。我遇到的問題是「遞增」數據。例如每天步數或每天消耗的卡路里。假設我每天要求可穿戴數據兩次,那麼我將得到一個具有3000個步驟的數據庫條目和另一個具有6000個步驟的數據庫條目。 – Shrimbo

+0

您在視圖中按時間順序排列 - 如果您只對總數感興趣,請選擇最後一個。每個條目將表示樣本被捕獲時的總數。 – xpqz

+0

我同意@xpqz。數據存儲很便宜。保持增量數據也使您能夠隨時間變化圖形。 – Raj

相關問題