Contoh dari dokumen luwak yang Anda referensikan menggunakan Number
untuk personSchema._id
bidang, dan ObjectId
untuk yang lain.
Saya kira mereka melakukan ini dalam contoh hanya untuk menunjukkan bahwa itu mungkin untuk digunakan. Jika Anda tidak menentukan _id
dalam skema, ObjectId
akan menjadi default.
Di sini, semua catatan Anda memiliki _id
bidang yang merupakan ObjectId
, namun Anda memperlakukannya seperti angka. Selanjutnya, bidang seperti personID
dan taskID
tidak ada, kecuali Anda mengabaikan bagian di mana Anda mendefinisikannya.
Jika Anda ingin menggunakan angka untuk semua _id
Anda bidang, Anda harus mendefinisikannya dalam skema.
var newsSchema = new Schema({
_id: Number,
_creator: {type: ObjectId, ref: "Person"},
// ...
})
var personSchema = new Schema({
_id: Number,
// ...
})
Kemudian untuk membuat item berita dengan ID tertentu, dan menetapkannya ke pembuat:
var tony = new Person({_id: 0});
var newsItem = new NewsItem({_id: 0, creator: tony.id});
Namun hal yang perlu diperhatikan di sini adalah ketika Anda menggunakan sesuatu selain ObjectId
sebagai _id
lapangan, Anda mengambil tanggung jawab untuk mengelola nilai-nilai ini sendiri. ObjectId dibuat secara otomatis dan tidak memerlukan manajemen tambahan.
Sunting:Saya juga memperhatikan bahwa Anda menyimpan referensi di kedua sisi asosiasi Anda. Ini benar-benar valid dan Anda mungkin ingin melakukannya kadang-kadang, tetapi perhatikan bahwa Anda harus berhati-hati menyimpan referensi sendiri di pre
kait.