41 445 besökare online
1 082 482 medlemmar • 56 602 964 inlägg
Användarnamn 
Lösenord
Flashback Forum Dator och IT Systemutveckling Webbutveckling och javascript
Svara på ämne
Ämnesverktyg
gay4cow
Medlem
gay4cows avatar
Hej där!

Jag har ett ganska ny till NodeJS och är lite ovan med asynchronous.

Jag försöker hämta flera värden från MySQL databasen men allt slutar fungera vid i callbacken i callbacken. Förklarar ganska oklart men om ni ser på koden kommer ni förmodligen förstå vad jag menar.

Kod:
connection.query("SELECT * FROM users WHERE id=1", function(erruser) {

connection.query("SELECT * FROM user_posts WHERE id=1 and user_id="+user[0].id, function(errposts) {

connection.query("SELECT * FROM xLOL WHERE id=1 and user_id="+posts[0].id, function(errxLOL) {

console.log(user.id);
console.log(posts.id);
console.log(xLOL.id); // Här får jag inte ut infon. TypeError: Cannot read property 'id' of null


});
});
}); 

Kod:
/home/cowy/penis_xxx/node_modules/mysql/lib/protocol/Parser.js:78 throw err; // Rethrow non-MySQL errors ^ TypeError: Cannot read property 'id' of null


Skulle vara extremt tacksam om någon kunde hjälpa!
 
Solus
Medlem
Soluss avatar
Om du kör dina SQL-frågor från en konsol, vad får du då?
 
gay4cow
Medlem
gay4cows avatar
Citat:
 Ursprungligen postat av Solus
Om du kör dina SQL-frågor från en konsol, vad får du då?

Tja där!

Om jag kör bara SQLn då får jag rätt resultat eller om jag kör dem separata och inte i callbacken.
 
Povel
Medlem
Povels avatar
I varje callback kan du ju passa på att hantera om `err` är icke-null, och isf kolla dess properties, så får du också automatiskt veta vad som är fel i den tredje hanteraren här.

/p
 
Proton
Moderator
Protons avatar
Citat:
 Ursprungligen postat av gay4cow
Hej där!

Jag har ett ganska ny till NodeJS och är lite ovan med asynchronous.

Jag försöker hämta flera värden från MySQL databasen men allt slutar fungera vid i callbacken i callbacken. Förklarar ganska oklart men om ni ser på koden kommer ni förmodligen förstå vad jag menar.

Kod:
connection.query("SELECT * FROM users WHERE id=1", function(erruser) {

connection.query("SELECT * FROM user_posts WHERE id=1 and user_id="+user[0].id, function(errposts) {

connection.query("SELECT * FROM xLOL WHERE id=1 and user_id="+posts[0].id, function(errxLOL) {

console.log(user.id);
console.log(posts.id);
console.log(xLOL.id); // Här får jag inte ut infon. TypeError: Cannot read property 'id' of null


});
});
}); 

Kod:
/home/cowy/penis_xxx/node_modules/mysql/lib/protocol/Parser.js:78 throw err; // Rethrow non-MySQL errors ^ TypeError: Cannot read property 'id' of null


Skulle vara extremt tacksam om någon kunde hjälpa!

Citat:
 Ursprungligen postat av gay4cow
Tja där!

Om jag kör bara SQLn då får jag rätt resultat eller om jag kör dem separata och inte i callbacken.
Är du säker på att du kär "rätt" fråga mot databasen i sådana fall och inte någon du bara "tåtat ihop"? tycker det ser ut som att user blir null för att du inte får någon träff i databasen. Kan iofs inte nåt om node.js, men det verkar ju vara den logiska förklaringen till null.

Vad är xLols för nåt förutom ett hopplöst dåligt namn på ett objekt? Innehåller den något vettigt alls?
 
Solus
Medlem
Soluss avatar
Citat:
 Ursprungligen postat av Proton
Är du säker på att du kär "rätt" fråga mot databasen i sådana fall och inte någon du bara "tåtat ihop"? tycker det ser ut som att user blir null för att du inte får någon träff i databasen.
Det här var min tanke från början. Det känns som att felet ligger tidigare än vad TS tror.
 
CD-skiva
Medlem
CD-skivas avatar
Ärligt talat så har jag lite svårt för att förstå vad det är för syfte med dina queries.

Men för att komma ifrån "callback hell" så kan du köra med promises istället, så kan du skriva något i stil med
Kod:
getUsers(id)
.
then(getPostsFromUser)
.
then(getXlol)
.catch(
catchErrors

https://www.npmjs.com/package/promise-mysql
 
Svara på ämne
Svara Topp Dela