如何更新数据库条目而不是创建新条目

时间:2016-12-07 09:19:22

标签: javascript angularjs cloudant fitbit

我目前正在开发一个网络应用程序,我们使用可穿戴设备来监控一些重要参数。出于集成测试的目的,我使用的是fitbit。 该应用程序是用angular / javascript编写的,数据库来自cloudant。 我的问题是:如何保持数据库条目的更新?我想每隔两小时从可穿戴设备请求数据并更新当天已存在的条目,而不是创建一个新的条目以防止重复。

到目前为止,我已经想到了两件事:

  1. 将今天的数据存储在变量中,尤其是每隔几小时更新一次的数据库条目的ID,并在0:00清除变量。
  2. 在每次更新之前获取所有条目并检查是否有今天日期的条目。如果是,请获取所述条目的ID并更新它,否则创建一个新的
  3. 我对这两种解决方案都不满意。

    提前致谢

1 个答案:

答案 0 :(得分:3)

可以在Cloudant / CouchDB中更新现有文档,但是您可以自行解决冲突。为每个样本创建一个新文档实际上是一个很好的方法,对于许多人来说,#IoT"使用Cloudant键入方案。然后,您可以使用视图来实现数据。您的文档可能如下所示:

{
   "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/