来自Node.js BigQuery客户端库的更详细的错误消息

时间:2018-03-14 08:23:12

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

我正在使用官方Google Node connector to BigQuery

我有以下代码片段将记录流式传输到数据库中:

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);
            }
        });
};

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

没有location字段可以告诉我哪个字段丢失,这使得调试此代码成为更复杂模式的噩梦。

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

enter image description here