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

标签 javascript angularjs cloudant fitbit

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

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

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

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

提前致谢

最佳答案

更新 Cloudant/CouchDB 中的现有文档是可以做到的,但是您会面临冲突。对于许多使用 Cloudant 的“IoT”类型场景,为每个示例创建一个新文档实际上是一种很好的方法。然后,您可以使用 View 来具体化数据。您的文档可能如下所示:

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

关于javascript - 如何更新数据库条目而不是创建新条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41013543/

相关文章:

javascript - forEach js,选择数组中的对象?

javascript - 根据条件 ng-change 更改 ng-model 字段的值

javascript - 如何使用参数在 node.js 中进行 Curl 调用

couchdb - Cloudant:索引与 View

database - PouchDB 相对远程数据库(使用 CouchDB/Cloudant)

javascript - 需要将ajax响应分配给div

javascript - 循环浏览表单元素数组

javascript - 使用 Bootstrap Slider 一个 Slider 结果是另外两个 Slider 的总和

javascript - AngularJS 检测哪个输入已更改

javascript - Angular ng-max 绑定(bind)问题