【问题标题】:More detailed error messages from Node.js BigQuery client library来自 Node.js BigQuery 客户端库的更详细的错误消息
【发布时间】:2018-08-22 16:30:07
【问题描述】:

我用的是官方Google Node connector to BigQuery。

我有以下 sn-p 将记录流式传输到数据库中:

module.exports.sendToBigQuery = (rows) => {
    bigquery
        .dataset(DATASET_NAME)
        .table(TABLE_NAME)
        .insert(rows)
        .catch(err => {
            if (err && err.name === 'PartialFailureError') {
                if (err.errors && err.errors.length > 0) {
                    console.log('Insert errors:');
                    err.errors.forEach(err => console.error(err));
                }
            } else {
                console.error('ERROR:', err);
            }
        });
};

不幸的是,每当我的数据与 scema 不匹配时,我得到的只是这个神秘的错误对象: { errors: [ { message: 'no such field.', reason: 'invalid' } ],

没有location 字段可以告诉我缺少哪个字段,这使得调试此代码成为更复杂架构的噩梦。

有没有办法以某种方式启用调试级别的错误?或者它只是客户端实现中的一个错误?知道如何访问这些信息吗?

【问题讨论】:

    标签: node.js google-cloud-platform google-bigquery


    【解决方案1】:

    这里的云支持,我可以看到您还提交了 github issue 关于此问题,其中明确说明 a)这与 node.js 客户端库无关,但与 BigQuery API 本身有关,b)您可以至少得到发生错误的行。在任何情况下,我都不认为此时也可以获取缺失的字段,但我提交了feature request,您可以关注更新。

    【讨论】:

      【解决方案2】:

      在撰写本文时,我不确定错误响应中的内容,但如果您深入了解 BigQuery 错误响应,现在它还包含错误信息。以下抓取取自调试会话并显示了错误对象的结构。

      【讨论】:

      • 截至 2021 年,由于我们从错误中获得的更新响应,我能够看到导致 PartialErrorFailure 的原因。
      猜你喜欢
      • 1970-01-01
      • 2014-10-11
      • 1970-01-01
      • 1970-01-01
      • 2012-04-01
      • 2017-08-04
      • 1970-01-01
      • 2019-05-16
      • 1970-01-01
      相关资源
      最近更新 更多