私は、ファンクションを実行するたびに、何もファイルに書き込まれず、コンソールに出力されないという問題が、ログイン後にファイルに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
}});
が、それはまだファイルに書き込めません。
あなたのファイルに書き込むコードに達する前に、あなたはあなたから戻り値を返す関数 'return info'を返しています。 – ricky
ええ、関数は* 'return'で終了します* – turmuka
どこに置く必要がありますか?私はそれを 'if'ステートメントの後に置いて、まだ書いていません。 – ZombieChowder