Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在XDB中写入(nodejs)具有相同时间戳的多个点?_Javascript_Node.js_Influxdb - Fatal编程技术网

Javascript 如何在XDB中写入(nodejs)具有相同时间戳的多个点?

Javascript 如何在XDB中写入(nodejs)具有相同时间戳的多个点?,javascript,node.js,influxdb,Javascript,Node.js,Influxdb,在我的nodejs应用程序中,我使用(时间序列数据库)保存日志数据。我以前用XDB写点。但在我的例子中,有多个日志数据具有相同的时间戳。在这种情况下,数据库中只保存最后的数据 我调试了脚本,发现javascript日期只包含毫秒,所以在我的例子中,多个数据具有相同的时间戳,因为它们以微秒为单位变化。因此,我需要一个日期格式,它以微秒为单位给出当前日期时间。或者是否有合适的方法在influxdb中写入具有相同时间戳的多个点?influxdb设计为在条件(时间戳、测量、标记)相同时仅保留一个点, 所

在我的nodejs应用程序中,我使用(时间序列数据库)保存日志数据。我以前用XDB写点。但在我的例子中,有多个日志数据具有相同的时间戳。在这种情况下,数据库中只保存最后的数据


我调试了脚本,发现javascript日期只包含毫秒,所以在我的例子中,多个数据具有相同的时间戳,因为它们以微秒为单位变化。因此,我需要一个日期格式,它以微秒为单位给出当前日期时间。或者是否有合适的方法在influxdb中写入具有相同时间戳的多个点?

influxdb设计为在条件(时间戳、测量、标记)相同时仅保留一个点, 所以你可以 通过两种不同的方式完成此任务:

  • 在js中使用不同的时间戳插入点 微秒()

  • 添加多个标签时,请尝试使用不同的标签 具有相同时间戳()的点,例如

    api_info,tag=tag1 elapse=0.234 1467085047286(时间戳是可选的)
    api_info,tag=tag2 elapse=0.478 1467085047286(时间戳是可选的)

  • 根据,点数据时间戳可以像纳秒那样精细

    使用HTTP API写入数据 HTTP API是将数据放入XDB的主要方法。到 写入数据向/write端点发送POST请求。榜样 下面将单个点写入mydb数据库。数据包括 测量cpu_load_short,标记键主机和带有 标记值server01和us west,字段键值和字段 值为0.64,时间戳为14340555620000000000

    注意
    时间戳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的第二个选项。创建唯一标记解决了我的问题。但是,如果有任何选项,让我以纳秒为单位计算当前日期时间,那就更好了。