2013-10-13 15 views
7

Heroku, PostgreSQL ve Node.js'yi kullanmak ve postgres veritabanımda herhangi bir kayıt eklediğimde Node.js, o satırın içeriğini konsola yazdırmak için ayarlamak istiyorum.Node.js ve postgres LISTEN

Bunları talimat olarak kurmak çalışıyorum: Burada
http://lheurt.blogspot.com/2011/11/listen-to-postgresql-inserts-with.html
http://bjorngylling.com/2011-04-13/postgres-listen-notify-with-node-js.html

Postgres üzerinde yürütülen fonksiyon node.js kod İşte

var pg = require('pg'); 
conString = '/*my database connection*/'; 

var client = new pg.Client(conString); 
client.connect(function(err) { 
    if(err) { 
    return console.error('could not connect to postgres', err); 
    } 
    client.connect(); 
    client.query('LISTEN "loc_update"'); 
    client.on('notification', function(data) { 
     console.log(data.payload); 
    }); 
}); 

olduğu

String function = "CREATE FUNCTION notify_trigger() RETURNS trigger AS $$ " 
      + "DECLARE " 
      + "BEGIN " 
      + "PERFORM pg_notify('loc_update', TG_TABLE_NAME || ',longitude,' || NEW.longitude || ',latitude,' || NEW.latitude);" 
      + "RETURN new;" 
      + "END;" 
      + "$$ LANGUAGE plpgsql;"; 

    String trigger = "CREATE TRIGGER location_update AFTER INSERT ON device " 
      + "FOR EACH ROW EXECUTE PROCEDURE notify_trigger();"; 

Yüklemeden sonra Heroku'ya inme bu hatayı alıyorum. Neyi yanlış yapıyorum?

2013-10-13T22:40:21.470310+00:00 heroku[web.1]: Starting process with command `node web.js` 
2013-10-13T22:40:23.697134+00:00 app[web.1]: 
2013-10-13T22:40:23.727555+00:00 app[web.1]: events.js:72 
2013-10-13T22:40:23.727822+00:00 app[web.1]:   throw er; // Unhandled 'error' event 
2013-10-13T22:40:23.727822+00:00 app[web.1]:    ^
2013-10-13T22:40:23.784576+00:00 app[web.1]: error: invalid frontend message type 0 
2013-10-13T22:40:23.784576+00:00 app[web.1]:  at p.parseE (/app/node_modules/pg/lib/connection.js:473:11) 
2013-10-13T22:40:23.784576+00:00 app[web.1]:  at p.parseMessage (/app/node_modules/pg/lib/connection.js:348:17) 
2013-10-13T22:40:23.784576+00:00 app[web.1]:  at Socket.<anonymous> (/app/node_modules/pg/lib/connection.js:84:22) 
2013-10-13T22:40:23.784576+00:00 app[web.1]:  at Socket.EventEmitter.emit (events.js:117:20) 
2013-10-13T22:40:23.784576+00:00 app[web.1]:  at Socket.<anonymous> (_stream_readable.js:746:14) 
2013-10-13T22:40:23.784576+00:00 app[web.1]:  at Socket.EventEmitter.emit (events.js:92:17) 
2013-10-13T22:40:23.784576+00:00 app[web.1]:  at emitReadable_ (_stream_readable.js:408:10) 
2013-10-13T22:40:23.784576+00:00 app[web.1]:  at emitReadable (_stream_readable.js:404:5) 
2013-10-13T22:40:23.784576+00:00 app[web.1]:  at readableAddChunk (_stream_readable.js:165:9) 
2013-10-13T22:40:23.784787+00:00 app[web.1]:  at Socket.Readable.push (_stream_readable.js:127:10) 
2013-10-13T22:40:25.128299+00:00 heroku[web.1]: Process exited with status 8 
2013-10-13T22:40:25.133342+00:00 heroku[web.1]: State changed from starting to crashed 
+0

Lütfen kodunuzu paylaşın. –

+0

localhost üzerinde çalışıyor mu? Olaylarda 72 kaç hat var? – dankohn

+0

Sabitlendiniz mi? humm ... bir süre oldu – Macario

cevap

1

deneyin değişkeni adlandırmak:

String function = "CREATE FUNCTION notify_trigger() RETURNS trigger AS $$ "; 

işlevi ayrılmış bir kelimedir

String variableFunction = "CREATE FUNCTION notify_trigger() RETURNS trigger AS $$ "; 

için. Hata devam ederse, localhost'ta aynı ortamı simüle etmeye çalışın.