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

How to update database entries instead of creating new entries

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

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

  1. 将今天的数据存储在一个变量中,尤其是每隔几个小时更新一次的数据库条目的ID,并在0:00处清除变量。
  2. 在每次更新之前获取所有条目并检查是否有今天日期的条目。如果是,则获取所述条目的 ID 并更新它,否则创建一个新的

我对这两种解决方案都不满意。

提前致谢

可以更新 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/