Mengikuti tutorial MongoDB, Buat Auto- Menaikkan Bidang Urutan
, Anda harus terlebih dahulu membuat counters
separate yang terpisah koleksi untuk melacak urutan nomor terakhir yang digunakan. _id
bidang berisi nama urutan yaitu userID
bidang di koleksi pengguna dan seq
bidang berisi nilai terakhir dari urutan.
Untuk memulainya, masukkan ke dalam counter collection nilai awal untuk userID
:
db.counter.insert(
{
"_id": "userID",
"seq": 0
}
)
Setelah mengisi koleksi penghitung, buat skemanya di Mongoose:
var counterSchema = mongoose.Schema({
"_id": { "type": String, "required": true },
"seq": { "type": Number, "default": 0 }
});
var counter = mongoose.model('counter', counterSchema);
Kemudian definisikan ulang skema pengguna Anda sehingga saat Anda menyimpan model pengguna, pertama kali memanggil findByIdAndUpdate()
model penghitung metode untuk secara atom menambah nilai seq dan mengembalikan nilai baru ini yang kemudian dapat digunakan sebagai userID
berikutnya nilai:
var userSchema = mongoose.Schema({
"userID": { "type": String, "required": true },
"firstname": { "type": String },
"lastname": { "type": String },
// other properties ...
}, { "collection": "user" }
);
userSchema.pre("save", function (next) {
var doc = this;
counter.findByIdAndUpdate(
{ "_id": "userID" },
{ "$inc": { "seq": 1 } }
, function(error, counter) {
if(error) return next(error);
doc.userID = counter.seq.toString();
next();
});
});