Здравствуйте, SO 'как вернуть логическое значение из связанных функций (дочерних элементов к родительским) в NodeJs?
Я читал некоторые материалы о обратных вызовах, но они всегда заканчиваются ошибкой "Обратный вызов не является функцией".Итак, я надеюсь, что свежая помощь или более понятные объяснения.
Моя цель - использовать функцию многократного использования вместо репликации всего блока аутентификации для всех маршрутов, требующих входа в систему.
PS: несмотри кучу "Console Log".: DЯ провел много часов, сталкиваясь с различными типами ошибок, поэтому я решил отладить все шаги.
test.js
const app_port = 3456;
const bcrypt = require('bcrypt');
const User = require('./user.model.js');
const mongoose = require('mongoose');
const express = require('express');
var app = express();
const bodyParser = require('body-parser');
app.use(bodyParser.json()); // support json encoded bodies
app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies
mongoose.connect('mongodb://localhost/jwtauth', { useNewUrlParser: true });
function traitor (emailSubmitted, password){
User.findOne({email: emailSubmitted}, async function(err, userInfo){
if (err) {
console.log(err);
}
else if (!userInfo) {
console.log("user : " + emailSubmitted + " not found !" + '\n');
}
else {
console.log(userInfo.password);
await bcrypt.compare(password, userInfo.password, function (err, result) {
if (result === true) {
console.log("user : " + emailSubmitted + " found !");
console.log("Password match and is " + userInfo.password) + '\n';
} else {
console.log("user : " + emailSubmitted + " found !");
console.log("Sorry, password missmatch !" + '\n');
}
});
}
})
}
app.post('/api', function(req, res) {
var email = req.body.email;
var password = req.body.password;
traitor(email, password); // <== Here I want to test a Boolean and execute some code accordingly.
console.log("req.body.email = " + req.body.email);
console.log("req.body.password = " + req.body.password + '\n');
res.send(req.body);
});
app.listen(app_port);
user.model.js
const mongoose = require('mongoose');
Schema = mongoose.Schema;
const user = Schema({
_id: Schema.Types.ObjectId,
email: {type: String, required: true},
password: {type: String, required: true}
});
module.exports = mongoose.model('User', user);