2017-08-10 3 views
-1

私はreq.bodyの問題に直面しています。これは、ifブロックには未定義の値を返しますが、elseブロックのreq.bodyは動作しています。それはFILE1の他のブロックを介して来ていた場合、あなたは私がすべての間違いにここreq.body is undefined - sequelize

file1.js

if (config.get('websiteType') === 'random') { 
      User.findOne({ 
       where: { 
        email: userData.email, 
       }, 
      }).then(function(foundUser) { 
       if (foundUser) { 
        User.update(userData, {where: {email: userData.email}}).then(function(updateUser) { 
         console.log('User update successfully'); 
         req.login(updateUser, function(err) { 
          if (err) { 

          } 
          console.log('This is the user data'+userData); 
          res.redirect('/quotes'); 
         }); 
         }); 
       } else { 
        console.log('new user'); 
         User.create(userData).then(function(newUser) { 
         req.login(newUser, function(err) { 
           if (err) { 
            // todo: error handling 
           } 
           res.redirect('/quotes'); 
          }); 
         }); 
       } 
      }); 
     } 

を作ってるんなら、私に知らせてください可能性があり、file2.js req.bodyに取り組んでいます。 jsがifブロックに当たっているときには動作しません。私の続編のアップデートに何か問題がありますか?

file2.js

function getQuote(user, res) { 
     console.log('firstname is ' + user.firstName); 
     const fname = user.firstName; 
     const lname = user.lastName; 
     const healthcondtion = 'EXCELLENT'; 
     const bday = moment(user.dob).add(1, 'days').format('YYYYMMDD'); 
     const age = moment().diff(moment(bday, 'YYYYMMDD'), 'years'); 
     const plan = user.plan; 
     const gender = user.gender; 
     const zip = user.zip; 
     console.log('Values are' + fname, lname, age, plan, gender, zip); 
res.render('quotes'); 
     } else { 
      res.render('error-page', {errorDetails: user}); 
     } 
     }); 
} 

    exports.get_quote = function(req, res, next) { 
     if (req.body) { 
     getQuote(req.user, res); 
     } else { 
     res.render('login', {message: 'Please Login In'}); 
     } 
    }; 

すべてのヘルプははるかに高く評価されます。ありがとうございました!

答えて

0

req.userを使うべきだと思います。あなたがする必要があるのはupdate an instanceです。

モデル内の複数のインスタンスを更新するため、変数updateUserは実際にはaffectedCount, affectedRows個のアイテムで構成される配列です。これはあなたがelseブロックに指定したインスタンスと同じではないため、req.loginという関数がおそらく壊れている可能性があります。

if (foundUser) { 
    foundUser.update(userData) 
//^user `foundUser` instance instead of `User` model here. 
      .then(() => { 
        console.log('User update successfully'); 
        req.login(foundUser, function(err) { ... }); 
         //^use the same `foundUser` in your callback 
      }); 
} else { ... } 
+0

これは機能しています。ありがとう@drinchev。 –

-1

なぜreq.bodyを使用しますか?

私はあなたが実際にユーザモデルのupdate multiple instancesしようとしている何をやっている代わりに

exports.get_quote = function(req, res, next) { 
     if (req.user) { 
     getQuote(req.user, res); 
     } else { 
     res.render('login', {message: 'Please Login In'}); 
     } 
}; 
+0

素敵なキャッチ:

あなたのインスタンスを更新するために、file1.jsのコードは次のようになります。私はreq.bodyをreq.userに置き換えましたが、値は未定義です@ZeroCho –

+0

'req.body'または' req.user'のどれが未定義ですか?あなたがリダイレクトされたため、 'req.body'は未定義です。 @EbenezerAnandAllally – ZeroCho

+0

req.userは未定義です@ZeroCho –

関連する問題