Javascript 如何安全地执行多个SELECT查询
为了翻译类型为的cassandra查询Javascript 如何安全地执行多个SELECT查询,javascript,cassandra,bluebird,Javascript,Cassandra,Bluebird,为了翻译类型为的cassandra查询 SELECT * FROM [table] WHERE ... AND [param x] IN (val1, val2, ..., valN) SELECT * FROM [table] WHERE ... AND [param x] = val1 SELECT * FROM [table] WHERE ... AND [param x] = val2 ... SELECT * FROM [table] WHERE ... AND [param x]
SELECT * FROM [table] WHERE ... AND [param x] IN (val1, val2, ..., valN)
SELECT * FROM [table] WHERE ... AND [param x] = val1
SELECT * FROM [table] WHERE ... AND [param x] = val2
...
SELECT * FROM [table] WHERE ... AND [param x] = valN
转换为类型为的多个查询
SELECT * FROM [table] WHERE ... AND [param x] IN (val1, val2, ..., valN)
SELECT * FROM [table] WHERE ... AND [param x] = val1
SELECT * FROM [table] WHERE ... AND [param x] = val2
...
SELECT * FROM [table] WHERE ... AND [param x] = valN
我已经创造了这个世界
在某些情况下,会生成数千个查询。尝试使用bluebird执行所有查询后,bluebird承诺以下方式:
Promise.all(promisesArray).then(function (results) { ... })
其中promisesArray是一系列承诺:
return new Promise(function (resolve, reject) {
client.execute(query, params, {prepare: true}, function (err, result) {
if (err) {
console.log(err);
reject(err);
} else {
resolve(result);
}
});
});
当尝试以这种方式运行批处理查询时,cassandra出现了几个问题,并且没有返回预期的结果
有人知道如何通过使用promises或是否有直接使用cassandra驱动程序的方法安全地在cassandra上执行多个SELECT查询吗?出现了什么问题?C*返回了什么数据?当调用Promise.all()时,如果该数组中有1000个承诺,那么将在循环中并发调用所有承诺,而不必等待前一个承诺完成。这意味着在不到一秒钟的时间内调用1000 DB?这应该引起关注吗?您可以使用bluebird.map()来控制并发性。@Cortwave错误:uncaughtException:超出了最大调用堆栈大小