2016-12-07 103 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

相关问题