• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

kleine Node.JS Frage

Manuel1223

New member
Hallo liebe jswelt,

ich bin gerade ein kleines bisschen mit node.js am rumprobieren und frage mich wieso mein script nicht geht. Er soll die ID des letzten Datenbankeintrages ausgeben, das funktioniert auch, allerdings kommt wenn ich die funktion aufrufe undefined raus.

Könnt ihr mir da helfen?

Hier das Skript:
Code:
var http = require("http");
var url = require('url');
var fs = require('fs');
var io = require('socket.io');
var mysql = require('mysql');
var ios = io.listen(8001);

var mysqlinfo = {
	host : 'host',
	user : 'user',
	password: 'pw',
	database: 'db',
	charset: 'utf8_general_ci'
};

var mysqlCon = mysql.createConnection(mysqlinfo);

mysqlCon.connect(function(err) {
  if (err) {
    console.error('MySQL Verbindung fehlgeschlagen: ' + err.stack);
    return;
  }

  console.log('MySQL Verbindung hergestellt. Thread: ' + mysqlCon.threadId);
});


function getGameID(){
	mysqlCon.query('SELECT ID FROM jk_games ORDER BY ID DESC LIMIT 1', function(err, rows, fields) {
		if (err) {
			console.error('MySQL Verbindung fehlgeschlagen: ' + err.stack);
			return;
		}
		var game = rows[0].ID;
		console.log('ID = '+game); // FUNKTIONIERT
		return game;
	});
}

ios.sockets.on('connection', function(socket){	
	setInterval(function a(){
		console.log(getGameID());  // FUNKTIONIERT NICHT (UNDEFINED)
        socket.emit('items', {'items': getGameID()});
    }, 1000);
	
});

Eigentlich sollte er mir dann jede sekunde getGameID() ausgeben. Allerdings gibt er nur undefined aus.

Danke!

Mit freundlichen Grüßen,
Manuel
 
Vielen dank für deine Antwort.

Es ist doch
return game; gegeben. Ist das nicht der returnwert von getGameID? Wie geht das mit dem Callback?

Danke dir!

- - - Aktualisiert - - -

Habe es jetzt so gemacht


// Method
HTML:
function getGameID (callback) {
    var query = mysqlCon.query('SELECT ID FROM jk_games ORDER BY ID DESC LIMIT 1');
    query.on('result', function(row) {
        callback(null, row.ID);
    });
};

ios.sockets.on('connection', function(socket){	
	setInterval(function a(){
        socket.emit('items', {'items': getGameID(function(err, result){
				return result;
			})});
    }, 1000);
	
});

allerdings gibt er mir das resultat noch immer nicht aus. Eine Konsolenausgabe geht. Setze ich den wert manuell erscheint der auch im Browser
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben