如何更新数据库条目而不是创建新条目
How to update database entries instead of creating new entries
我目前正在开发一个网络应用程序,我们在其中使用可穿戴设备来监控一些重要参数。出于集成测试目的,我使用的是 Fitbit。
该应用程序是用angular/javascript编写的,数据库来自cloudant。
我的问题是:一般情况下,您如何保持数据库条目的更新?我想每两个小时从可穿戴设备请求数据并更新当天已有的条目,而不是创建一个新条目以防止重复。
到目前为止我想到了两件事:
- 将今天的数据存储在一个变量中,尤其是每隔几个小时更新一次的数据库条目的ID,并在0:00处清除变量。
- 在每次更新之前获取所有条目并检查是否有今天日期的条目。如果是,则获取所述条目的 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/
我目前正在开发一个网络应用程序,我们在其中使用可穿戴设备来监控一些重要参数。出于集成测试目的,我使用的是 Fitbit。 该应用程序是用angular/javascript编写的,数据库来自cloudant。 我的问题是:一般情况下,您如何保持数据库条目的更新?我想每两个小时从可穿戴设备请求数据并更新当天已有的条目,而不是创建一个新条目以防止重复。
到目前为止我想到了两件事:
- 将今天的数据存储在一个变量中,尤其是每隔几个小时更新一次的数据库条目的ID,并在0:00处清除变量。
- 在每次更新之前获取所有条目并检查是否有今天日期的条目。如果是,则获取所述条目的 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/