【问题标题】:Timestamp postgres angularjs nodejs时间戳postgres angularjs nodejs
【发布时间】:2017-12-17 02:04:12
【问题描述】:

我在 AngularJS 中显示图表时遇到问题。我的后端是用 nodeJS 编写的,我有一个聚合器作为缓冲区,其中包含 netdata 接收的数据,我在其中插入要插入 BD 的数据。但与此同时,我正在使用 cron 执行此操作。

对于一个新的客户端请求,我需要另一个 cron 来为同一个 BD 编写并使用同一个聚合器,但结构不同,我没有使用 netdata,我做了所有更改,但问题是插入的时间戳不同.

例如,

第一个 Cron:2017-07-12 15:31:28+01 第二个 Cron:2017-07-12 15:16:21.335547+01(插入时我使用 CURRENT_TIMESTAMP)

也许这在 AngularJS 中发生了冲突……有人想在我的 bd 上以“2017-07-12 15:31:28+01”的格式插入吗?我的时间戳字段是带有时区的时间戳。

如果我评论第二个 cron 其他图表显示正常

聚合数据库:

AgregateDatabase.prototype.addRow = function (dbConnection, data) {
    createLog('info', __dirname, __filename.slice(__dirname.length + 1, -3), data.device_id, 'addRow','inicio');
    createLog('debug', __dirname, __filename.slice(__dirname.length + 1, -3), data.device_id, 'addRow','type', data.type);


    return new Promise(function (resolve, reject) {
        pg.connect(dbConnection, function (err, client, done) {
            if (err) {
                createLog('error', __dirname, __filename.slice(__dirname.length + 1, -3), data.device_id, 'addRow', err);
                reject(err);
                return
            }

            if(data.type==='probing_live' || data.type==='probing_repeated' || data.type==='probing_passBy'){
                    createLog('debug', __dirname, __filename.slice(__dirname.length + 1, -3), data.device_id, 'addRow','data', data);

                client.query("INSERT INTO default_dataset (id, timestamp, agregation_period, medium, maximum, minimum, sum, type, device_id, network_id, organization_id, labels) \
                VALUES ($1, CURRENT_TIMESTAMP, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)",
                    [data.id, data.agregation_period, data.medium, data.maximum, data.minimum, data.sum, data.type, data.device_id, data.network_id, data.organization_id, data.labels],
                    function (err, result) {
                        done();
                        if (err) {
                            console.log("probing addRow errrrrrrro");
                            createLog('error', __dirname, __filename.slice(__dirname.length + 1, -3), data.device_id, 'probing addRow error', err);
                            reject(err);
                        } else {
                            console.log("probing addRow row added ", JSON.stringify(result));
                            createLog('info', __dirname, __filename.slice(__dirname.length + 1, -3), data.device_id, 'probing addRow row added');
                            resolve(result.rows);
                        }
                    });
            } else {
                client.query("INSERT INTO default_dataset (id, timestamp, agregation_period, medium, maximum, minimum, sum, type, device_id, network_id, organization_id, labels) \
                    VALUES ($1, to_timestamp($2), $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)",
                        [data.id, data.timestamp, data.agregation_period, data.medium, data.maximum, data.minimum, data.sum, data.type, data.device_id, data.network_id, data.organization_id, data.labels],
                        function (err, result) {
                            done();
                            if (err) {
                                console.log("probing addRow errrrrrrro");
                                createLog('error', __dirname, __filename.slice(__dirname.length + 1, -3), data.device_id, 'probing addRow error', err);
                                reject(err);
                            } else {
                                console.log("probing addRow row added ", JSON.stringify(result));
                                createLog('info', __dirname, __filename.slice(__dirname.length + 1, -3), data.device_id, 'probing addRow row added');
                                resolve(result.rows);
                            }
                        });
            }
        });
    });
}

【问题讨论】:

  • 什么是BD?你的问题到底出在哪里?显示日期或将其插入 BD?你有任何错误吗?参考this link如何提出一个好问题
  • 我插入数据正常,但为“probing_”类型保存的时间戳与我之前所说的不同,这可能是所有图表停止显示正常的原因...我不知道

标签: javascript angularjs node.js postgresql


【解决方案1】:

尝试像这样截断 current_timestamp:

INSERT INTO default_dataset (....)
                VALUES ($1, DATE_TRUNC('second',CURRENT_TIMESTAMP) .....

【讨论】:

    猜你喜欢
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2019-04-29
    相关资源
    最近更新 更多