首页 > 解决方案 > 我可以在 bigquery 中将函数的参数作为查询的一部分传递吗?

问题描述

async function test(p1) {
  let [result] = await bigquery.query({
    query: [
      'SELECT url',
      'FROM `publicdata.samples.github_nested`',
      'WHERE repository.owner = @owner'

    ].join(' '),
    params: {
      owner: p1
    }
  });
  result.forEach(row => {
    console.log(url)
  }
}

错误:(节点:19492)UnhandledPromiseRejectionWarning:错误:未声明的查询参数

要编写大查询,请将函数的参数作为查询的一部分传递,我使用了 bigquery 提供的查询语句。在 node.js 环境中。但是,我无法保存存储 p1 的 @owner。

以下文件与此有关。 https://cloud.google.com/nodejs/docs/reference/bigquery/2.0.x/BigQuery

在 bigquery 中将函数的参数作为查询的一部分发送我应该怎么做?node.js 环境。

标签: node.jsgoogle-cloud-platformgoogle-bigquery

解决方案


你的问题是你做了console.log(url)而不是console.log(row.url)

这是我用来验证这一点的完整代码

if (!global._babelPolyfill) {
    var a = require("babel-polyfill")
}

import BigQuery from '@google-cloud/bigquery'

describe('Check BigQuery', async () => {

    it('Test param', async () => {
        let result = await test('panada')

    })

    async function test(p1) {
        try {
            const bigquery = new BigQuery({
                projectId: `myProject`,
                keyFilename: '/Users/tamirklein/ssh/9473b308ab0e.json'
            })

            let query = [
                'SELECT url',
                'FROM `publicdata.samples.github_nested`',
                'WHERE repository.owner = @owner'

            ].join(' ')

            console.log(`query is: ${query}`)
            let [result] = await bigquery.query({
                query,
                params: {
                    owner: p1
                }
            })

            result.forEach(row => {
                console.log(`row number ${index}, url is: ${row.url}`)
            })
        } catch (err) {
            console.log("err", err)
        }
    }
})

这是输出:

query is: SELECT url FROM `publicdata.samples.github_nested` WHERE repository.owner = @owner
row number 0, url is: https://github.com/de3/Panada
row number 1, url is: https://github.com/schbern/samples
row number 2, url is: https://github.com/panada/Panada/compare/47a1801f13...9dedbc8ce6
row number 3, url is: https://github.com/panada/Panada/pull/38
row number 4, url is: https://github.com/panada/samples/compare/46934664ea...a7cae9f088
row number 5, url is: https://github.com/panada/Panada/compare/175c88e2cb...47a1801f13
row number 6, url is: https://github.com/panada/samples/compare/1a35a44548...46934664ea
row number 7, url is: https://github.com/panada/samples/compare/256c9b4ed3...1f293ca245
row number 8, url is: https://github.com/panada/documentation/compare/49c38b23e2...d948d2eb97
row number 9, url is: https://github.com/panada/Panada/pull/38
row number 10, url is: https://github.com/panada/documentation/compare/d948d2eb97...46b7bcde5f
row number 11, url is: https://github.com/panada/samples/compare/a7cae9f088...256c9b4ed3
row number 12, url is: https://github.com/panada/Panada/pull/36
row number 13, url is: https://github.com/panada/documentation/pull/1
row number 14, url is: https://github.com/panada/documentation/pull/1
row number 15, url is: https://github.com/de3/documentation
row number 16, url is: https://github.com/cakyus/Panada
row number 17, url is: https://github.com/panada/Panada/compare/9dedbc8ce6...4db3e50d80
row number 18, url is: https://github.com/panada/documentation/compare/46b7bcde5f...52e9ef5c67
row number 19, url is: https://github.com/panada/documentation/issues/1#issuecomment-4533276

推荐阅读