正确的方法来关闭在线程中运行的RethinkDB changes()?

时间:2018-02-20 16:29:48

标签: rethinkdb watch

我们在线程中调用了changes(),因此我们可以在进行其他处理时监视表的更改。当我们的进程想要关闭时,线程不会关闭并保持进程运行。关闭与noreply_waitsee here)的连接会导致错误,因此有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

我需要更多信息才能获得帮助。 您在什么类型的环境中连接到重新考虑的服务器? 什么是启动监视更改期间所需的进程以及该进程在完成时发出的事件类型?

我将假设您在node.js环境中工作,除非另有说明

const spawn = require('child_process').spawn;
r.table('yourTable').filter(function(row) {
    return row('yourProperty').eq('trueVal');
})
.changes()
.run(rethinkConnection, function(err, cursor) {
    if (err) {
        console.log(err);
    } else {
        const doingThings = spawn('command', ['option1', 'option2']);
        doingThings.on('exit', function() {
            cursor.close();
        });
        cursor.each(function(err, row) {
            if (err) {
                console.log(err);
            } else {
                // do thing with changefeed row here
            }
        });
    }
});