Ini konvensi di Rails. Anda memiliki objek "pengguna", Anda menyimpannya di koleksi "pengguna". Itu sama di Mongoose, kurasa.
Sergio Tulentsev
Ya, yang cukup menarik adalah var Dataset = mongoose.model ('dataset', dataSchema); menghasilkan koleksi yang disebut data.
Bob Ren
Tampaknya logika pluralisasi tidak sebodoh itu (atau pintar, tergantung apa yang Anda harapkan). Saya yakin Anda dapat mengetahui cara kerjanya dengan tepat (temukan sumbernya).
Saya tidak mengerti bagaimana menambahkan "s" membuat kerangka kerja lebih cerdas, IMHO, itu ide yang buruk. Selain itu luwak adalah kerangka kerja yang luar biasa.
Roberto
14
itu adalah pilihan buruk lama yang merusak kompatibilitas mundur jika diambil. jadi kami memilih untuk tetap menggunakannya.
aaronheckmann
18
itu tidak hanya menambahkan 's' tetapi membuat bentuk jamak yang benar dari namanya. Coba contoh dengan 'mouse', Anda akan mendapatkan koleksi bernama 'mice' atau dengan 'person' Anda akan mendapatkan 'people'. Sungguh membuat saya gila untuk memahami dari mana nama-nama ini berasal :-)
Enrico Giurin
3
Ini sangat gila sekarang, nama mana yang Anda gunakan untuk menanyakan koleksi Anda terutama ketika Anda harus melakukannya dari antarmuka lain?
Xsmael
8
Saya panik, karena saya mendefinisikan "kuas" dan ada koleksi bernama "kuas". Saya mencoba menemukan di mana saya mendefinisikannya selama hampir setengah jam dan tidak menemukan apa pun. Saya berpikir: "Mungkin pintar dan menambahkan itu. Mungkin tidak, tapi mari kita lihat .... FUUUUUUU"
Apa yang dilakukan luwak adalah, Ketika tidak ada argumen koleksi yang dilewatkan, Mongoose menghasilkan nama koleksi dengan membuat jamak nama model. Jika Anda tidak menyukai perilaku ini, berikan nama koleksi atau setel opsi nama koleksi skema Anda.
Contoh:
var schema =newSchema({ name:String},{ collection:'actor'});
atau
schema.set('collection','actor');
atau
var collectionName ='actor'var M = mongoose.model('Actor', schema, collectionName);
Solusi terbaik, karena kita tidak perlu menentukan nama model dan nama koleksi.
Nezih
Ini jelas merupakan pendekatan terbaik.
netishix
1
Saya butuh beberapa jam untuk mempelajari kecerdasan luwak semacam ini. Pokoknya - senang saya menemukan solusi ini. BTW: Ini juga menghindari casing bawah otomatis dari nama koleksi.
Bernhard Fürst
8
Anda cukup menambahkan string sebagai argumen ketiga untuk menentukan nama sebenarnya dari koleksi tersebut. Memperluas contoh Anda, untuk mempertahankan nama sebagai datadan usermasing - masing:
//Mongoose's definition file. NOT your model files1const mongoose = require("mongoose");2 mongoose.pluralize(null);
Menambahkan garismongoose.pluralize(null) di file Mongoose Anda akan mencegah pluralisasi nama koleksi. Anda tidak perlu menambahkan baris ini ke file model Anda.
Mongoose menyusun model untuk Anda ketika Anda menjalankan perintah ini
var schema =new mongoose.Schema({ name:'string', size:'string'});var child = mongoose.model('child', schema);
Argumen pertama adalah nama tunggal koleksi model Anda. Mongoose secara otomatis mencari bentuk jamak, versi huruf kecil dari nama model Anda. Jadi, untuk contoh di atas, model anak adalah untuk koleksi anak di database.
Catatan: The .model()fungsi membuat salinan skema. Pastikan Anda telah menambahkan semua yang ingin Anda skema, termasuk hook, sebelum menelepon .model()!
Jawaban:
Mongoose mencoba menjadi pintar dengan membuat nama koleksi Anda jamak. Namun Anda dapat memaksanya menjadi apa pun yang Anda inginkan:
var dataSchema = new Schema({..}, { collection: 'data' })
sumber
Struktur API mongoose.model adalah ini:
Apa yang dilakukan luwak adalah, Ketika tidak ada argumen koleksi yang dilewatkan, Mongoose menghasilkan nama koleksi dengan membuat jamak nama model. Jika Anda tidak menyukai perilaku ini, berikan nama koleksi atau setel opsi nama koleksi skema Anda.
Contoh:
atau
atau
sumber
Mulai dari mongoose 5.x Anda dapat menonaktifkannya sepenuhnya:
sumber
Anda cukup menambahkan string sebagai argumen ketiga untuk menentukan nama sebenarnya dari koleksi tersebut. Memperluas contoh Anda, untuk mempertahankan nama sebagai
data
danuser
masing - masing:sumber
Anda dapat menambahkan nama koleksi sebagai parameter ketiga. Lihat contoh menggunakan Ketikan:
sumber
Menambahkan garis
mongoose.pluralize(null)
di file Mongoose Anda akan mencegah pluralisasi nama koleksi. Anda tidak perlu menambahkan baris ini ke file model Anda.Seperti yang terlihat di sini .
sumber
Di akhir pendefinisian skema Anda di baris berikutnya Gunakan kode ini
Asumsikan bahwa status Anda adalah apa yang ingin Anda gunakan pada db Anda untuk menghindari s sebagai status
Klik link untuk melihat gambar dengan benar
sumber
Mongoose menyusun model untuk Anda ketika Anda menjalankan perintah ini
Argumen pertama adalah nama tunggal koleksi model Anda. Mongoose secara otomatis mencari bentuk jamak, versi huruf kecil dari nama model Anda. Jadi, untuk contoh di atas, model anak adalah untuk koleksi anak di database.
Catatan: The
.model()
fungsi membuat salinan skema. Pastikan Anda telah menambahkan semua yang ingin Anda skema, termasuk hook, sebelum menelepon.model()
!sumber