node.js - 我可以在 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 环境。
解决方案
你的问题是你做了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
推荐阅读
- mongoose - mongoose 集合名称以 's' 结尾
- javascript - 使用欧几里得距离的颜色量化给出了跳跃的结果
- javascript - Firebase 代码显示警告:无法对未安装的组件执行 React 状态更新
- google-sheets - 需要在谷歌表中使用附加功能
- javascript - FullCalendar 不会在日历上呈现事件的最后一天
- angular -
选定的值设置,但未显示 - node.js - 在 mern stack 应用程序中,我在哪里存储上传的图像或文件
- php - 添加空间 PHP 时我的功能不起作用
- python - python中按位运算的时间复杂度是多少?
- python - python中的websockets库如何工作