Javascript 如何在XDB中写入(nodejs)具有相同时间戳的多个点?
在我的nodejs应用程序中,我使用(时间序列数据库)保存日志数据。我以前用XDB写点。但在我的例子中,有多个日志数据具有相同的时间戳。在这种情况下,数据库中只保存最后的数据Javascript 如何在XDB中写入(nodejs)具有相同时间戳的多个点?,javascript,node.js,influxdb,Javascript,Node.js,Influxdb,在我的nodejs应用程序中,我使用(时间序列数据库)保存日志数据。我以前用XDB写点。但在我的例子中,有多个日志数据具有相同的时间戳。在这种情况下,数据库中只保存最后的数据 我调试了脚本,发现javascript日期只包含毫秒,所以在我的例子中,多个数据具有相同的时间戳,因为它们以微秒为单位变化。因此,我需要一个日期格式,它以微秒为单位给出当前日期时间。或者是否有合适的方法在influxdb中写入具有相同时间戳的多个点?influxdb设计为在条件(时间戳、测量、标记)相同时仅保留一个点, 所
我调试了脚本,发现javascript日期只包含毫秒,所以在我的例子中,多个数据具有相同的时间戳,因为它们以微秒为单位变化。因此,我需要一个日期格式,它以微秒为单位给出当前日期时间。或者是否有合适的方法在influxdb中写入具有相同时间戳的多个点?influxdb设计为在条件(时间戳、测量、标记)相同时仅保留一个点, 所以你可以 通过两种不同的方式完成此任务:
api_info,tag=tag2 elapse=0.478 1467085047286(时间戳是可选的)
时间戳14340555620000000000
对于使用npm节点流入模块以纳秒为单位的写入点,可以使用将精度设置为“ns”(纳秒)。也就是说,精度:“ns”
。要通过influx节点模块写入点,它不需要您拥有日期对象,因此如果您知道自epoch以来的确切日期时间戳值,您可以将其作为64位整数值传入,以便写入influx
请参见此处的示例代码。var influx = require('influx');
var databaseWriter = influx({
host: 'XXX',
port: 'XXX',
protocol: 'XXX',
username: 'XXX',
password: 'XXX',
database: 'XXX'
});
this.databaseWriter.writePoints(
'influx_stackoverflow_solution',
[
// point #1
[
{
"value": 999,
"time" : 1422568543702900257
},
{
'tag1' : 'value_in_nanoseconds'
}
],
// point #2
[
{
"value": 8888,
"time" : 1422568543702900600
},
{
'tag1' : 'value_in_nanoseconds'
}
]
],
{ precision: 'ns' },
function(errmsg, returnValue) {
if (errmsg) return callback(new Error(errmsg));
callback(null, returnValue);
}
);
输出:如何用纳秒获得当前日期时间?据我所知,Javascript的日期时间对象最多只支持毫秒。因此,这是不可能的。在你的帖子中,你提到你得到的数据在微秒之间变化,所以我假设你已经知道该点的日期时间戳了。对吗?想分享一下你在这里记录的是什么样的数据吗?我一微秒也记不到。这就是为什么我在寻找将它们写入inflow的任何选项。那么您如何知道您的数据以微秒为单位进行区分呢?另外,看看@TommyLike的解决方案,标签
elaps
e要求您具有实际微秒微分值,以使每个点唯一。那么你是如何计算出这个值的呢?我需要保存数据,即使它显示相同的时间戳。所以我选择了@TommyLike的第二个选项。创建唯一标记解决了我的问题。但是,如果有任何选项,让我以纳秒为单位计算当前日期时间,那就更好了。