ใครที่เรียนคอร์ส Mongoose for Web Developer อาจจะมีคำถามที่ว่า
เออในเมื่อ Mongoose มันกำหนด _id
ให้กับ document เองแล้วเนี่ย ถ้าจู่ๆ เราจะกำหนด เจ้า document id นี้เองได้ไหม?
คำตอบคือได้ครับ แต่… แต่… มาดูวิธีทำกันก่อน
1. กำหนด _id โดยตรงตอนสร้าง Schema
ตอนสร้าง Schema เรากำหนดลงไปเองได้เลย
const schema = new Schema({ _id: Number });
const Model = mongoose.model('CustomIDDocument', schema);
2. ตอนใช้ พึงระวังให้ดี
ที่ว่าแต่ในตอนเริ่มต้น นั่นเพราะถ้าเราทำการกำหนด document id โดยตรง แล้วตอนเอา Schema มาสร้างเป็น model ใช้งาน ถ้าไม่กำหนด _id แล้วสั่ง .save()
ตัว Mongoose จะงอแงครับ
const doc = new Model();
await doc.save(); // จะเจอ error "document must have an _id before saving"
ดังนั้น ถ้าให้มันไม่งอแง เราต้องจัดการเอง
doc._id = 1;
await doc.save(); // แบบนี้ได้
อ้างอิง – Mongoose Documentation