2015-05-09 96 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

非常感謝你 –