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

Javascript 如何更新数据库条目而不是创建新条目,javascript,angularjs,cloudant,fitbit,Javascript,Angularjs,Cloudant,Fitbit,我目前正在开发一个web应用程序,我们使用可穿戴设备来监控一些重要参数。出于集成测试的目的,我使用fitbit。 应用程序是用angular/javascript编写的,数据库来自cloudant。 我的问题是:通常如何保持数据库条目的更新?我想每两小时向可穿戴设备请求一次数据,并更新当天已经存在的条目,而不是创建一个新条目以防止重复 到目前为止,我想到了两件事: 将今天的数据存储在变量中,特别是数据库条目的ID,每隔几个小时更新一次,并在0:00清除变量 在每次更新之前,获取所有条目并检查是否

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

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

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


    提前感谢

    更新Cloudant/CouchDB中的现有文档是可以做到的,但是您会遇到冲突。对于使用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);
        }
    }
    

    这里有更多信息:

    我认为对于这种DB,没有什么比“替换为”更合适的了,可能是选项1或类似redis之类的东西,还有一个每天执行选项2一次的cron。我更喜欢第一个解决方案,但方式有点不同。对于每个条目,您必须接收回调并存储上次插入的时间。插入新数据时,应使用可变日期检查日期。关于这个比较,你可以决定做什么。你的例子对于血压或血氧饱和度这样的数据很有用,因为你在设定的时间有一个“静态”值。我遇到的问题是“递增”数据。e、 g.每天的步数或每天消耗的卡路里。假设我每天两次请求可穿戴数据,然后我将获得一个包含3000个步骤的DB条目和另一个包含6000个步骤的DB条目。视图中按时间顺序排列了这些条目-如果您只对总数感兴趣,请选择最后一个。每个条目将代表捕获样本时的总数。我同意@xpqz。数据存储很便宜。保留增量数据还可以让您随时间绘制图表。我将尝试一下。谢谢你的帮助。