hallo,
voor een project ben ik bezig met real time chat met socket.io, node.js en mariadb.
ik wil door middel van een de database connetion de chat gegevens uitwisselen.
Ik kan het naar de database toe sturen ik krijg er alleen niks uit.
Wat doe ik fout?
ik heb het volgende geschreven:




//Create by kenny [email protected],
//With socket.io, fs, http and mariasql
 
var fs = require('fs'),
        http = require('http'),
        socketio = require('socket.io'),
        DB = require('mariasql');
var db = new DB({
        host: '{{hier stond het IP}}',
        user: '{{hier stond user}}',
        password: '{{hier stond het wachtwoord}',
        db: '{{hier stond de databasenaam}}'
});
//prepare de qeury for insert data
var insertchat = db.prepare("INSERT INTO messages (message,date,remove_from) VALUES (:message, NOW(),'1') ");
var message = db.query("SELECT * FROM messages");
 
var server = http.createServer(function(req, res) {
        res.writeHead(200, { 'Content-type': 'text/html'});
        res.end(fs.readFileSync('index.html'));
}).listen(3000, function() {
        console.log('Listening at: http://localhost:3000');
});
 
socketio.listen(server).on('connection', function (socket) {
        socket.on('message', function (msg) {
                message.on('result', function(res) {
                        res.on('data', function(row) {
                                console.dir(row);
                        }).on('end', function() {
                                console.log('Result set finished');
                        });
                }).on('end', function() {
                        console.log('No more result sets!');
                });
                console.log('Message Received: ', msg);
                db.query(insertchat({message: msg}));
                socket.broadcast.emit('message', msg);
         });
});
Is nodejs actief op dezelfde server als de database?
(en anders) accepteert de database ook externe connecties?
Heb je gecontroleerd dat het maken van een verbinding met de database is geslaagd?
Je prepared wel, maar execute niet?
Je zegt "Ik kan het naar de database toe sturen" waar blijkt dit uit?
Thomas van den Heuvel op 28/04/2016 15:57:22

Is nodejs actief op dezelfde server als de database?
(en anders) accepteert de database ook externe connecties?
Heb je gecontroleerd dat het maken van een verbinding met de database is geslaagd?
Je prepared wel, maar execute niet?
Je zegt "Ik kan het naar de database toe sturen" waar blijkt dit uit?


Ja alles
omdat ik als ik data door stuur van uit index.html die in de database invoegt.
ik heb nu even het volgende (ja de rest werkt);
als ik console.dir(row);
krijg ik allemaal waardes uit de db.
als ik console.log(datamessage())/console.dir(datamessage());
krijg ik "undefined"

function datamessage(){
        messages.on('result', function(res) {
                res.on('data', function(row) {
                        return row;
                        //console.dir(row);
                });
        });
}

console.log(datamessage());


[size=xsmall]Toevoeging op 29/04/2016 17:41:44:[/size]

Mebus Hackintosh op 29/04/2016 17:07:46

message.end();

Als ik even zo snel kijk op: https://github.com/mscdex/node-mariasql#examples

Dunno wat het precies doet, maar misschien handelt dat nog iets af?


Dat sluit de dataconnectie
De inhoud van datamessage() staat er om ergens op te reageren.
wat nog niet gebeurt wanneer je het wilt loggen.

Verander de inhoud maar eens naar: return '123';
Randy vsf op 29/04/2016 18:28:10

De inhoud van datamessage() staat er om ergens op te reageren.
wat nog niet gebeurt wanneer je het wilt loggen.

Verander de inhoud maar eens naar: return '123';


moet ik die return row;
daar naar return '123'; aanpassen?

function datamessage(){
        return 123;
}
console.log(datamessage());


Wat je nu hebt is gelijk aan:

function datamessage(){
        
}
console.log(datamessage());

Geeft undefined
jaa maar wat moet ik dan doen om het goed te krijgen?
Ik neem aan het terug sturen naar de verbonden client(s) dmv emit()?
Waarom wil je eigenlijk waardes uit de DB terugsturen?
Je krijgt de messages toch al binnen? je hoeft ze dan alleen op te slaan,
en de input te sturen naar verbonden clients.
ja klopt.
omdat een chat wordt als je pagina sluit en weer opent dat je het gwn terug kan lezen

Reageren