Azure DocumentDB(CosmosDB?)Timstamp问题

时间:2017-07-06 01:10:12

标签: javascript azure azure-cosmosdb azure-functions

我有一个Azure DocumentDB集合,我正在通过Event Hub触发的函数编写带时间戳的文档。 写入文档的时间戳(my_timestamp)来自处理事件的函数,我已经确认它是准确的。

我遇到的问题是DocumentDB创建的_ts元数据时间戳显示的是一个unix时间戳值,它是我正在创建的时间戳之前的秒数,即它实际上是在应用一个时间戳,它早于创建文档的函数执行的开始......

看起来这可能是基础DocumentDB机制中的一个怪癖。

无论如何,我想知道是否有其他人遇到这种差异。以下是我在文档中出现的时间戳:

"my_timestamp": 1499301915, // here's my timestamp that originates from the Azure Function
"_ts":          1499301899  // and here's the timestamp created by DocDB?

用于在Azure功能中导出my_timestamp的代码:

var timeStamp = + Math.floor(new Date().getTime() / 1000);

1 个答案:

答案 0 :(得分:3)

AFAIK,_ts字段是表示日期和时间的unix样式的纪元时间戳,每次修改文档时都会更新。

  

无论如何,我想知道是否有其他人遇到这种差异。

根据您的描述,我检查了这个问题,并且我有时遇到了同样的问题。但是当我今天检查这个问题时,我无法重现这个问题,这是我的测试代码:

<强>的Javascript

var doc={
    timestamp:Math.floor(new Date().getTime() / 1000)
    };

context.bindings.outputDocument = doc;

setTimeout( function() { 
    context.res={
        status:200,
        body:JSON.stringify(doc)
    };
    context.done();
}, 10*1000);

通过Azure验证资源管理器中的查询结果:

enter image description here

另外,我已经使用azure函数C#模板和DocumentDB客户端SDK检查了添加新文档。如果此问题仍然存在,我认为您可以添加反馈here