如何从bigquery nodejs api获取整数
How can I get integers from bigquery nodejs api?
我正在从bigquery获取数据,我需要将其作为整数存储在MongoDB中,以便我可以在Mongo中对该数据执行操作。尽管 bigquery 中列的数据类型是 Integer,但它的 nodejs api 在其 Javascript 对象中返回字符串。例如,我得到的结果看起来像[{row1:'3',row2:'4',row3:'5'},{row1:'13',row2:'14',row3:'15'}...]
typeof
在对象的每个元素上给出字符串。我可以运行一个循环并将每个元素转换为整数,但这在数据集上是不可扩展的。另外,我不希望所有字符串都转换为整数,只希望将那些在bigquery中存储为整数的字符串转换为整数。我在nodejs中使用gcloud模块来获取数据。
假设你知道类型属性在响应上的位置,这样的东西就可以了。
var response = [{type: 'Integer', value: '13'} /* other objects.. */];
var mappedResponse = response.map(function(item) {
// Put your logic here
// This implementation just bails
if (item.type != 'Integer') return item;
// This just converts the value to an integer, but beware
// it returns NaN if the value isn't actually a number
item.value = parseInt(item.value);
// you MUST return the item after modifying it.
return item;
});
这仍然循环覆盖每个项目,但如果它不是我们想要的,则会立即纾困。还可以编写多个地图和过滤器来概括这一点。
解决这个问题的唯一方法是首先应用过滤器,但这基本上实现了与我们初始类型检查相同的目标
var mappedResponse = response
// Now we only deal with integers in the map function
.filter(x => x.type == 'Integer)
.map(function(item) {
// This just converts the value to an integer, but beware
// it returns NaN if the value isn't actually a number
item.value = parseInt(item.value);
// you MUST return the item after modifying it.
return item;
});
BigQuery 在通过 API 返回整数时故意将整数编码为字符串,以避免大值的精度损失。目前,唯一的选择是在客户端解析它们。
相关文章:
- 使用node.js服务器中的evernote api获取note内容
- jQuery使用api获取typeform结果
- Spotify API:获取随机歌曲
- 如何使用Google Embed API获取选定的帐户ID和属性ID
- 谷歌位置api获取细节,并不是每个地方都返回
- 使用Google Feeds API获取RSS Feed标题
- 使用AcrobatJavascript API获取所选文本
- 如何使用Chrome扩展API获取网页的所有HTTP请求
- 谷歌地图API-获取信息窗口打开时,点击一个圆圈
- 如何使用Javascript/AngularJS从API获取此jSON数据
- 与杜兰达尔合作的第一个JavaScript项目.尝试从第三方 API 获取数据
- 从地图框 API 获取地理 JSON 数据以确定多边形中的点
- 使用维基词典API获取确切的同义词或反义词
- 使用Facebook api获取专辑封面
- 如何将从谷歌自定义搜索API获取的数据放入复选框列表
- 如何从外部api获取数据
- Deezer API-获取当前位置
- 如何从API获取数据并将其放入表(Jquery)中
- 从API获取电影数据's在javascript中
- 使用谷歌地图api获取方向,无需使用地图