2016-03-19 2 views
0

У меня возникла проблема с функцией изменения списка rethinkdb. Когда вы добавляете документ в коллекцию, консольный вывод отсутствует. BUT «изменения» выводятся один раз после запуска приложения через node app.js, почему это так? Любая помощь приветствуется.changes() не вызывается при вставке документа

// rethinkdb connection 
var connection = null; 
r.connect({ db: 'bc', host: 'localhost', port: 1337}, function(err, conn) { 
    if(err) throw err; 

    connection = conn; 
    observeBets(); 
}); 


function observeBets() { 
    r.table('bets').changes().run(connection, function(err, betsCursor) { 
     if (err) throw err; 

     console.log("changes"); 
    }); 
} 

Вставить через

var bet = { 
    bet: "test", 
    userID: 213 
}; 
r.table('bets').insert(bet); 
+0

Выполнение запроса changes() через проводник данных работает должным образом, поэтому должна быть проблема с узлом, я предполагаю. – Chris

ответ

1

Я думаю, вам нужно быть итерация betsCursor.

+0

Но почему? Разве это не функция обратного вызова, которая должна быть вызвана, поэтому нужно вызвать 'console.log (« changes »)'? – Chris

+0

Обратный вызов не вызывается один раз за изменение, он вызывается один раз, когда вы * завершаете подписку на изменения *, и он передает курсор. Если вы вызываете 'bestCursor.each (callback2)', тогда для каждого изменения вызывается 'callback2'. – mlucy

+0

Это сработало отлично, спасибо! – Chris