2017-10-16 6 views
0

私は、ファンクションを実行するたびに、何もファイルに書き込まれず、コンソールに出力されないという問題が、ログイン後にファイルにjsonデータを書き込むようにしています。NodeJSはファイルに書き込みません。ミドルウェアが動作しない

この質問を例として使用しましたが、Example 1 ですが、まだ何も問題ありません。ここで

は私のNodeJSスクリプトのミドルウェア部分である:

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!"); 
     } 
    } 

私が最初モンゴでそれを照会することによって、ファイルにユーザ名日付を記述しようとしています:dbx.accounts.findOne(function(err, info)

ミドルウェアが想定しているjsonファイルに書き込まないのはなぜですか?

EDIT:

fs.readFile( 'logs.json'、 'UTF8'、関数readFileCallback(ERR、データ){

:私はこのような return文を入れている

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 
     }}); 

が、それはまだファイルに書き込めません。

+1

あなたのファイルに書き込むコードに達する前に、あなたはあなたから戻り値を返す関数 'return info'を返しています。 – ricky

+0

ええ、関数は* 'return'で終了します* – turmuka

+0

どこに置く必要がありますか?私はそれを 'if'ステートメントの後に置いて、まだ書いていません。 – ZombieChowder

答えて

0

この質問に関するすべてのヘルプのためのすべての感謝の最初に。Iイチジク皆さんからの助けを借りて何が間違っていたのかを確かめました。

return infoステートメントは、私が本当に必要としなかったので完全に削除しました。 obj = JSON.parse(obj)は既にのjavascriptインタープリタによって解析されているため、私はobj = JSON.parse(obj)を削除しました。私はJSON.stringify(出力)を削除しました。なぜなら、どこにでも出力を使用していないからです。

私は混乱を引き起こした場合は助けて申し訳ありません。

関連する問題