如何在Cassandra nodejs-driver中打印结束查询?
我正在寻找在Cassandra nodejs-driver中打印结束查询的方式,即在绑定了所有参数之后的CQLstring,以便我可以debugging并查看Cassandra引擎的实际值。 这个怎么做?
var query = ' select * from shahid.tbl_raw_data where yymmddhh = ? limit ? '; var params = [last_yymmddhh_value, settings.records_per_batch]; client.execute(query, params, {prepare: true}, function(err, result) { console.log( result ); });
我想得到这样的string
select * from shahid.tbl_raw_data where yymmddhh = '15010101' limit 100
注意:这是一个简单的例子,我实际上是在循环中处理非常复杂的查询,所以我不想做console.log(last_yymmddhh_value)
来查看绑定值。
实际上由驱动程序执行的查询不同于完整查询文本,因为评估是在服务器端完成的。
实际发送到服务器的是一个唯一的ID,标识准备好的语句和您提供的参数值(请参阅: EXECUTE )。 但是,最终您提供的查询文本是正在评估的内容。
java-driver具有查询logging器概念 ,logging执行的查询及其延迟。 您可以对其进行configuration,使其仅logging慢速查询或所有查询。 它还logging准备好的语句中使用的参数,即:
DEBUG [cluster1] [/127.0.0.1:9042] Query completed normally, took 9 ms: select * from shahid.tbl_raw_data where yymmddhh = ? limit ? [15010101, 100];
目前还没有nodejs-driver这样的构造,但是alex-rokabilis的答案在大多数情况下都是可行的,唯一的例外就是使用命名参数的地方,或者实际上有'?' 列名(这是有效的,但可能不是人们实际上做的事)。 我已经loginNODEJS-220请求实现这样的function。
你可以试试这个
function dispQuery(query, params) { var params_temp = Array.from(params); return query.replace(/\?/g, function() { return params_temp.shift() }) }
例如在你的代码中:
client.execute(query, params, {prepare: true}, function(err, result) { console.log("Query ::%s",dispQuery(query,params)); console.log("Result ::",result); });
- 使用具有规模的nodejsstream式传输cassandra数据
- 如何通过节点js运行复杂的cassandra sql
- Meteor.js可能与Cassandra而不是MongDB?
- Cassandra – NodeJS – 检索地图types值时发出
- 在Cassandra中使用用户定义的types和nodejs
- 由node.js返回的Cassandra地图集合Helenus看起来很奇怪
- 如何用Cassandra Consistencies定义TYPES?
- 有Node.js / JavaScript的Thrift或Cassandra客户端吗?
- Cassandra驱动程序在php,java,python,node.js中的拓扑意识