2017-01-31 4 views
-2

私はnodejsアプリケーションでjwtを実装しようとしています。あなたが見ることができるように、私は、ユーザーモジュールにそれを参照してくださいusers.findは関数ではありませんnodejs

app.post("/api/v1/token", function(req, res) { 
    if (req.body.email && req.body.password) { 
     let email = req.body.email; 
     let password = req.body.password; 
     let user = users.find(function(u) { 
      return u.email === email && u.password === password; 
     }); 
     if (user) { 
      let payload = { 
       id: user.id 
      }; 
      let token = jwt.encode(payload, cfg.jwtSecret); 
      res.json({ 
       id: user.id, 
       token: token, 
       status:'success' 
      }); 
     } else { 
      res.sendStatus(401); 
     } 
    } else { 
     res.sendStatus(401); 
    } 
}); 

は、ここで私のトークン方式です。 し、私は電子メールとパスワードに基づいてユーザーを見つける。 それは私のユーザーのjsモジュールを指しています。

var users = require('./app/api/users/login.js'); 
module.exports = users; 

ログインJSモジュール:毎回私はトークンを取得しようとする理由、

const db = require('../../config/db'); 
const abort = require('../../util/abort'); 

const ctl = { 
    getAllUser(req, res, next) { 
    db.any('SELECT * FROM users') 
    .then((data) => { 
     if (data.length === 0) { 
     throw abort(404, 'No user data yet', 'Empty user table'); 
     } 

     return res.status(200).json([{ 
     data, 
     }]); 
    }) 
    .catch(err => next(err)); 
    }, 
}; 

module.exports = ctl; 

はIDKのここ

は私のユーザーjsのモジュールです。 { "ステータス": "エラー"、 "メッセージ": "users.findは関数ではありません" }それは、常にこのようなエラーのMSGを返す

のplsは私を助けて。 ありがとうございます。

答えて

0

login.jsモジュールには、「find」という名前のコードがありません。 getAllUserなど、その上に存在するメソッドを呼び出してみてください。

+0

との間違いをチェックしてください。 –

+0

ファイルへのパスは正しいですか?コンソールに表示されるエラーは何ですか? – Jizmo

0

この場合、usersは配列ではないため、users.find is not a functionとなります。 find()は配列上にのみ存在します。 console.log(users)でエラーが発生する前の値を知ることができます

さらにコードを検査すると、next(err)login.jsに戻すようです。 getAllUser()を呼び出すときにコールバックを手作業で折り返している場合は、ユーザーモジュールをjsonデータの配列に完全に更新する場合、errusers

関連する問題