Skip to content

Instantly share code, notes, and snippets.

@jameslittle230
Created May 8, 2018 12:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jameslittle230/4d51e489d49bfca23089b821124bc7bc to your computer and use it in GitHub Desktop.
Save jameslittle230/4d51e489d49bfca23089b821124bc7bc to your computer and use it in GitHub Desktop.
Callback Hell
app.get('/loadUserData', function(req, res) {
var keys, chats, messages;
var u_id = req.query.user_id;
db.all(`SELECT * FROM keys WHERE user_id = ` + u_id + ` OR expired_at IS NULL`, function(err, data) {
if(err || !data) return res.status(404).send(err || "No data found for ID");
keys = data;
db.all(`SELECT * FROM messages WHERE recipient_id = ` + u_id, function(err, data) {
if(err || !data) return res.status(404).send(err || "No data found for ID");
messages = data;
db.all(`SELECT * FROM chats WHERE chat_id IN (SELECT chat_id FROM user_chat WHERE user_id IS ` + u_id + `)`, function(err, data) {
if(err || !data) return res.status(404).send(err || "No data found for ID");
chats = data;
var chatsProcessed = 0;
db.serialize(function() {
for (let chat of chats) {
db.all(`SELECT user_id, first_name, last_name FROM users WHERE user_id IN
(SELECT user_id FROM user_chat WHERE chat_id IS ` + chat.chat_id + `)`,
function(err, data) {
if(err) return res.status(404).send(err);
chat.members = data;
chatsProcessed++;
if(chatsProcessed == chats.length) {
return res.send({
"keys": keys,
"messages": messages,
"chats": chats
});
}
});
};
});
});
});
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment