ユーザーはDBに作成され、コードが何度もチェックされ、構文エラーはなく、ユーザーが作成されていても定義されていません。名前とパスワードでリクエストをポストするときは、資格情報を正しく入力する必要があります。コード:mongoDBで見つからないユーザーを認証できません
var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var User = new Schema({
name: String,
password: String,
admin: Boolean
});
var Usermodel = mongoose.model("user", User);
module.exports = Usermodel;
router.post('/authenticate', function(req, res) {
// find the user
user.findOne({
name: req.body.name
}).then(function(err, user) {
console.log(user);
if (err) throw err;
if (!user) {
res.json({ success: false, message: 'Authentication failed. User not found.' });
} else if (user) {
// check if password matches
if (user.password != req.body.password) {
res.json({ success: false, message: 'Authentication failed. Wrong password.' });
} else {
// if user is found and password is right
// create a token with only our given payload
// we don't want to pass in the entire user since that has the password
const payload = {
admin: user.admin
};
var token = jwt.sign(payload, 'superSecret', {
expiresIn: 60*60*24 // expires in 24 hours
});
// return the information including token as JSON
res.json({
success: true,
message: 'Enjoy your token!',
token: token
});
}
}
});
});
必要なすべての依存関係、私はちょうどif文は、私が作成したユーザーを見つけていないとはconsole.logリターンは未定義、コンソールにすべてのエラーを得ることはありません。私はここに何かを逃していますかこれは意味をなさない。コールバックを約束に変えたが、それでも変わらない。 DBでユーザーを探すときに間違っているような気がします。私はfind({})を試みましたが、運はありませんでした。
あなたはMongoのコンソールからそれを見つけることができすべきですか? –
約束しているmongoose findOneでは、then句でのみdocを取得します。また、exec()を使用することをお勧めします。 – tumulr
@MustafaMamun私はmongoコンソールの代わりにRobo 3Tを使用していますが、コンソールでも見ることができます。 – Limpuls