2017-10-16 2 views
0

Ich versuche derzeit, meine Middeware JSON-Daten in eine Datei schreiben, nachdem angemeldet ist. Mein Problem ist, dass, wenn ich die Funktion ausführen, nichts in die Datei geschrieben noch in der Konsole ausgegeben wird.NodeJS schreibt nicht in Datei. Middleware funktioniert nicht

Ich habe diese Frage als Beispiel Example 1 verwendet, aber immer noch nichts funktioniert. Hier

ist der Middleware-Teil meines NodeJS Skript:

function isLoggedIn(req, res, next) { 
      dbx.accounts.findOne(function(err, info){ 
       console.log(JSON.stringify(info.username)); 
       return info; 

       var xx = info.username; 
       var date = new Date(); 
       console.log(JSON.stringify(date)); 
       var obj = { 
        users: [] 
       }; 

       fs.readFile('logs.json', 'utf8', function readFileCallback(err, data){ 

       console.log(JSON.stringify(obj)); 
       obj.users.push({time: date, name: xx}); 
        if (err){ 
         console.log(err); 
        } else { 
        obj = JSON.parse( ); //now it an object 
        obj.users.push({time: date, name: xx}); //add some data 
        json = JSON.stringify(obj); //convert it back to json 
        fs.writeFileSync('logs.json', json, 'utf8', JSON.stringify(output)); // write it back 
       }}); 

      }); 


     //logs.stamps.push({id:----, timestamp:date.toString()}) 

     console.log('here is Authenticated', req.isAuthenticated()) //prints out 'here is Authenticated' if the Passport login is successful 
     if (req.isAuthenticated()){ 
      return next(); 
     }else{ 
      console.log("routes Print log You Cannot Log in!"); 
     } 
    } 

I Benutzername und Datum in die Datei zu schreiben versuchen, indem sie sie mit Mongo Abfrage zuerst: dbx.accounts.findOne(function(err, info)

Warum schreibt meine Middleware nicht wie angenommen in die JSON-Datei?

EDIT:

fs.readFile ('logs.json', 'utf8', function readFileCallback (err, Daten) {

:

ich die return Anweisung wie folgt gesetzt haben

console.log(JSON.stringify(obj)); 
     obj.users.push({time: date, name: xx}); 
      if (err){ 
       console.log(err); 
      } else { 
      obj = JSON.parse( ); //now it an object 
      obj.users.push({time: date, name: xx}); //add some data 
      json = JSON.stringify(obj); //convert it back to json 
      return info; 
      fs.writeFileSync('logs.json', json, 'utf8', JSON.stringify(output)); // write it back 
     }}); 

aber es schreibt immer noch nicht in die Datei.

+1

Sie kehren von Ihrer Funktion 'return info' zurück, bevor Sie den Code erreicht haben, der in Ihre Datei schreibt. – ricky

+0

Ja, die Funktion endet auf * 'return' * – turmuka

+0

Wo sollte ich es platzieren? Ich lege es einfach nach der 'if' Anweisung und es schreibt immer noch nicht. – ZombieChowder

Antwort

0

Erstmal danke für all die Hilfe in Bezug auf diese Fragen. ich fig habe mit einer Menge Hilfe von euch herausgefunden, was los war.

Ich habe die return info Anweisung vollständig entfernt, da ich sie nicht wirklich brauchte. Zweitens entfernte ich die obj = JSON.parse(obj), weil es bereits von der Javascript-Interpreter analysiert wird. Ich entfernte auch die JSON.stringify (Ausgang), weil ich die Ausgabe nirgendwo verwende.

Danke für die Hilfe und Entschuldigung, wenn ich irgendeine Verwirrung verursacht habe.

Verwandte Themen