2015-05-09 6 views
0

Я пытаюсь создать тему NSQ и вставлять данные в rethinkdb, но я не могу вставить данные в rethinkdb. Может кто-нибудь мне помочь.не вставлять данные в rethinkdb

**var nsq = require('nsqjs'); 
var r = require('rethinkdb'); 
var nsqdd = (process.env.NSQD_RETH || "localhost:4161").split(","); 
var connection = null; 
r.connect({host: 'localhost', port: 28015, db:'test', authKey:''}, function(err, conn) { 
    if (err) throw err; 
    connection = conn; 
}) 
var eventreader; 
eventreader = new nsq.Reader('ev_topic', 'ev_channel', { 
    lookupdHTTPAddresses: nsqdd 
}); 
eventreader.connect(); 
eventreader.on('message', function (msg) { 
    r.table('rethinkdb_test').insert(msg.json()).run(conn); 
    console.log('Received message [%s]: %s', msg.id, msg.body.toString()); 
    msg.finish(); 
});** 

ответ

2

Похоже, ваш второй запрос (insert) не имеет доступа к переменной conn. Для этого вам нужно будет поместить код считывателя событий в номер обратный вызов для вашей функции соединения.

var nsq = require('nsqjs'); 
var r = require('rethinkdb'); 
var nsqdd = (process.env.NSQD_RETH || "localhost:4161").split(","); 
var connection = null; 
r.connect({host: 'localhost', port: 28015, db:'test', authKey:''}, function(err, conn) { 
    if (err) throw err; 
    connection = conn; 
    // Event Reader functionality inside connect callback 
    var eventreader; 
    eventreader = new nsq.Reader('ev_topic', 'ev_channel', { 
     lookupdHTTPAddresses: nsqdd 
    }); 
    eventreader.connect(); 
    eventreader.on('message', function (msg) { 
     // Now we have access to the connection 
     r.table('rethinkdb_test').insert(msg.json()).run(conn); 
     console.log('Received message [%s]: %s', msg.id, msg.body.toString()); 
     msg.finish(); 
    }); 
}); 
+0

Большое вам спасибо –

Смежные вопросы