MongoDB

Mongoose: ใช้ Schema ตรวจ email ซ้ำก่อนเอาลง Database

เรื่องที่เกี่ยวข้อง - MongoDB, Mongoose
MongoDB

ไหนๆ ในคอร์ส 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

เริ่มต้นยุค AI ด้วยคอร์สฟรี และพรีเมี่ยม กับพล

หากชอบสิ่งที่พลเล่า เรื่องที่พลสอน สามารถสนับสนุนพลโดยการเข้าเรียนคอร์สออนไลน์ของพลนะคร้าบ

  • เข้าใจง่าย ใช้ได้จริง ออกแบบการสอนอย่างเข้าใจโดยโค้ชพล
  • มีคอร์สสำหรับคนใช้งานทั่วไป จนถึงเรียนรู้เพื่อใช้งานในสายอาชีพขั้นสูง
  • ทุกคอร์สมีใบประกาศณียบัตรรับรองหลังเรียนจบ

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

Allow All
Manage Consent Preferences
  • Always Active

Save