2017-07-17 3 views
1

Liste Eimer mit Callback wiedergegeben wird:Knoten aws s3.listBuckets Express führt Rückruf nach Seite

router.get('/', function(request,response) { 
    s3.listBuckets(function(error, data) { 
     if (error) { 
      console.log(error); 
     } else { 
      console.log(data.Buckets[0].Name);//since i have only one bucket 
      bucket = data.Buckets[0].name;  
     } 
    }); 

    response.render('index', { mybucket:bucket }); 
    console.log("rendered page"); 
}); 

Ausgang:

rendered page      //rendered page with mybucket:'' empty 
GET /getbucket 200 7.827 ms - 787 
lvresults       //bucketname displayed after rendering in console 

bucketname zugänglich ist nur für Seite

Antwort

1

Sie gemacht wird sollte auf Daten innerhalb der Callback-Funktion zugreifen.

router.get('/', function(request,response) { 
    s3.listBuckets(function(error, data) { 
     if (error) { 
      console.log(error); 
     } else { 
      console.log(data.Buckets[0].Name); 
      bucket = data.Buckets[0].name; 
      console.log("rendered page"); 
      response.render('index', { mybucket:bucket });   
     } 
    }); 

}); 

Um mehr Verständnis über asynchrones Verhalten zu bekommen, würde this link hilfreich sein.