Da Sie kein einfaches Passwort in Ihrer Datenbank speichern sollen, ist es nicht sinnvoll, das Passwort in der Datenbank zu validieren. Denn Sie sollten das Passwort zuerst hashen und dann speichern. Das gehashte Passwort ist eine komplexe Zeichenfolge, die höchstwahrscheinlich die Validierung besteht, um in der Datenbank gespeichert zu werden.
Sie müssen also das Passwort auf der Clientseite validieren. dafür können Sie das joi npm Paket verwenden.
https://www.npmjs.com/package/@hapi/joi
So können Sie es implementieren.
userModel.js //sollte im Modellordner sein
const Joi = require('@hapi/joi');
const mongoose = require("mongoose");
//you defined your schema above, it should be **lowercase**
//here is the model, model should start capital letter
const User=mongoose.model("User",userSchema)
function validateUser(user) {
const schema = Joi.object().keys({
email: Joi.string()
.min(8)
.max(50)
.required()
.email(),
password: Joi.string()
.min(6)
.required()
.max(20)
.regex(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).{8,1024}$/) //special/number/capital
});
return Joi.validate(user, schema);
}
module.exports.User = User;
module.exports.validate = validateUser;
Ich werde demonstrieren, wie man diese Funktion in einem Post-Router verwendet.
userRoute.js
//import model and validate func
const { User, validate } = require("/models/user");
router.post("/", async (req, res) => {
//validating the request here
const { error } = validate(req.body);
if (error) res.status(400).send(error.details[0].message);
//i used this code to show you how to use validate function
//i am not sure what is your project about
});