I have a function
exports.loginService = async(req,res) => {
const { workerId, workerPassword } = req.body;
try {
const foundUser = await User.findOne({ workerId });
if (!foundUser) {
return res.status(404).json({
message: "Employee does not exist (Invalid Employee ID)",
});
} else if (foundUser.totalLoginAttemptLeft > 0) {
const { updatedWorker, isMatch } = await checkPassword(
workerPassword,
foundUser
);
if (!isMatch) {
passwordNotMatched(res, updatedWorker);
} else {
const jwtToken = await totalLogin(foundUser, reset);
return res.status(200).json({ token: "Bearer " + jwtToken });
}
} else {
return res.status(400).json({
message: "You'r account is locked Please contact to ADMIN or HR",
});
}
} catch (error) {
console.error(error.message);
return res.status(500).json({ message: error.message });
}
}
I am exporting this in the main route file
const loginService = require("../../services/authServices")
router.post("/login", loginService);
But when I running the code it’s giving this error
Error: Route.post() requires a callback function but got a [object] Object
What I am doing wrong?
Advertisement
Answer
You’re trying to use the exports object as though it were a function. If you want to only export the function, overwrite exports rather than assigning to a property on it:
module.exports = async(req,res) => {
// ...
};
(Note that it has to be module.exports, not just exports.)
Alternatively, keep your current export and destructure the require call:
const { loginService } = require("../../services/authServices");