使用 node.js 将数据插入 Cassandra 后,程序似乎仍在等待
After inserting data into Cassandra with node.js, the program seems like it is still waiting
我现在对 Cassandra 和 node.js 真的很陌生。我正在尝试插入 200 个数据,它们似乎已插入到数据库中。
var client = new cassandra.Client({contactPoints: ['127.0.0.1'], keyspace: 'big'});
var insertRepo = 'INSERT INTO big.repo_info (id, name, full_name) '
+ 'VALUES(?, ?, ?);';
for (var i = 0, len = items.length; i < len; i++) {
console.log(items[i].id, items[i].name, items[i].full_name);
client.execute(insertRepo,
[items[i].id, items[i].name, items[i].full_name],
{ prepare : true },
function (err) {
if (err) {
console.log(err);
} else {
console.log('done')
}
});
};
但是,在这个事务之后,程序似乎在等待一些没有真正完成的事情。所以,我只是按 ctrl-c
退出程序。这是正常现象还是我需要为此做些什么?
我想我错过了什么。
Node.js 事件循环将保持活动状态,直到打开的连接关闭。
在这种情况下,这意味着您需要调用client.shutdown()
。
此外,考虑到 client.execute()
是一个异步操作,因此从同步循环调用它通常不是一个好主意。您可以改用工作流库,例如 async 库。
async.timesSeries(items.length, function (n, next) {
var params = [ items[i].id, items[i].name, items[i].full_name];
client.execute(insertQuery, params, { prepare: true }, next);
}, function allFinished(err) {
client.shutdown();
});
检查 async.timesSeries() 方法以获取更多信息。
我现在对 Cassandra 和 node.js 真的很陌生。我正在尝试插入 200 个数据,它们似乎已插入到数据库中。
var client = new cassandra.Client({contactPoints: ['127.0.0.1'], keyspace: 'big'});
var insertRepo = 'INSERT INTO big.repo_info (id, name, full_name) '
+ 'VALUES(?, ?, ?);';
for (var i = 0, len = items.length; i < len; i++) {
console.log(items[i].id, items[i].name, items[i].full_name);
client.execute(insertRepo,
[items[i].id, items[i].name, items[i].full_name],
{ prepare : true },
function (err) {
if (err) {
console.log(err);
} else {
console.log('done')
}
});
};
但是,在这个事务之后,程序似乎在等待一些没有真正完成的事情。所以,我只是按 ctrl-c
退出程序。这是正常现象还是我需要为此做些什么?
我想我错过了什么。
Node.js 事件循环将保持活动状态,直到打开的连接关闭。
在这种情况下,这意味着您需要调用client.shutdown()
。
此外,考虑到 client.execute()
是一个异步操作,因此从同步循环调用它通常不是一个好主意。您可以改用工作流库,例如 async 库。
async.timesSeries(items.length, function (n, next) {
var params = [ items[i].id, items[i].name, items[i].full_name];
client.execute(insertQuery, params, { prepare: true }, next);
}, function allFinished(err) {
client.shutdown();
});
检查 async.timesSeries() 方法以获取更多信息。