ไหนๆ ในคอร์ส Mongoose for Developer ก็มีการแนะนำแนวคิดของ Custom validator แล้ว มันก็มีวิธีเอา custom validator ไปใช้หลายแบบนะ แบบที่ใช้กันบ่อยๆ ก็คือการใช้เช็คความถูกต้องของข้อมูลใช่มะ (ก็มันคือ validator นี่)
แต่อีกแบบที่ไปเจอมา ก็คือเราใช้เทียบกับข้อมูลของ Model ได้เช่นเดียวกัน เช่นการเทียบว่ามีข้อมูลดังกล่าวอยู่ในฐานข้อมูลหรือยัง ถ้ามีก็ไม่บันทึกลงฐานข้อมูลเป็นต้น
แนวคิดการเช็คว่ามี Email อยู่ใน Database หรือยัง ผ่าน Schema
โดยในที่นี้ จะเป็นตัวอย่างภาษา JavaScript ที่ใช้ Node เวอร์ชั่น 14 เป็นต้นไป และเปิดการทำงานของ module แล้ว
ใครใช้ TypeScript ไปดูตัวอย่างในคอร์ส Mongoose for Web Developer: TypeScript Edition ได้นะ
var userSchema = new mongoose.Schema({
email: {
type: String,
required: true,
validate: {
validator: async function(value, isValid) {
const user = this;
const matchUser = await user.constructor.findOne({ email: value })
if(user) return false // user with this email is exist.
return true
},
message: 'The email address is already taken!'
},
}
});
อ้างอิง – StackOverflow