ตัวอย่างเช่นรหัสนี้ส่งผลให้มีการสร้างคอลเล็กชันที่เรียกว่า "ข้อมูล"
var Dataset = mongoose.model('data', dataSchema);
และรหัสนี้ส่งผลให้มีการสร้างคอลเล็กชันที่เรียกว่า "ผู้ใช้"
var User = mongoose.model('user', dataSchema);
ขอบคุณ
ตัวอย่างเช่นรหัสนี้ส่งผลให้มีการสร้างคอลเล็กชันที่เรียกว่า "ข้อมูล"
var Dataset = mongoose.model('data', dataSchema);
และรหัสนี้ส่งผลให้มีการสร้างคอลเล็กชันที่เรียกว่า "ผู้ใช้"
var User = mongoose.model('user', dataSchema);
ขอบคุณ
คำตอบ:
พังพอนพยายามทำตัวให้ฉลาดโดยตั้งชื่อคอลเลคชันของคุณให้เป็นพหูพจน์ อย่างไรก็ตามคุณสามารถบังคับให้เป็นอะไรก็ได้ที่คุณต้องการ:
var dataSchema = new Schema({..}, { collection: 'data' })
โครงสร้าง API ของพังพอนโมเดลคือ:
Mongoose#model(name, [schema], [collection], [skipInit])
สิ่งที่พังพอนทำก็คือเมื่อไม่มีการส่งผ่านอาร์กิวเมนต์คอลเลกชันพังพอนจะสร้างชื่อคอลเลกชันโดยการทำให้ชื่อรุ่นเป็นพหูพจน์ หากคุณไม่ชอบพฤติกรรมนี้ให้ส่งชื่อคอลเลกชันหรือตั้งค่าตัวเลือกชื่อคอลเล็กชันสกีมาของคุณ
ตัวอย่าง:
var schema = new Schema({ name: String }, { collection: 'actor' });
หรือ
schema.set('collection', 'actor');
หรือ
var collectionName = 'actor'
var M = mongoose.model('Actor', schema, collectionName);
เริ่มจากพังพอน 5.x คุณสามารถปิดใช้งานได้อย่างสมบูรณ์:
mongoose.pluralize(null);
คุณสามารถเพิ่มสตริงเป็นอาร์กิวเมนต์ที่สามเพื่อกำหนดชื่อจริงสำหรับคอลเลกชัน ขยายตัวอย่างของคุณเพื่อให้ชื่อเป็นdata
และuser
ตามลำดับ:
var Dataset = mongoose.model('data', dataSchema, 'data');
var User = mongoose.model('user', dataSchema, 'user');
คุณสามารถเพิ่มชื่อคอลเล็กชันเป็นพารามิเตอร์ที่สาม ดูตัวอย่างโดยใช้ typescript:
import DataAccess = require('../DataAccess');
import IUser = require("../../Models/Interfaces/IUser");
var mongoose = DataAccess.mongooseInstance;
var mongooseConnection = DataAccess.mongooseConnection;
class UserSchema {
static get schema () {
var schema = mongoose.Schema({
_id : {
type: String
},
Name: {
type: String,
required: true
},
Age: {
type: Number,
required: true
}
});
return schema;
}
}
var schema:any = mongooseConnection.model<IUser>("User",
UserSchema.schema,"User");
export = schema;
//Mongoose's definition file. NOT your model files
1 const mongoose = require("mongoose");
2 mongoose.pluralize(null);
การเพิ่มบรรทัดmongoose.pluralize(null)
ในไฟล์ Mongoose ของคุณจะป้องกันไม่ให้ชื่อคอลเล็กชันเป็นพหูพจน์ คุณไม่จำเป็นต้องเพิ่มบรรทัดนี้ในไฟล์โมเดลของคุณ
ดังที่เห็นนี้ .
ในตอนท้ายของการกำหนดสคีมาของคุณในบรรทัดถัดไปใช้รหัสนี้
module.exports = mongoose.model("State", "StateSchema", "state")
สมมติว่าสถานะของคุณคือสิ่งที่คุณต้องการใช้บนฐานข้อมูลของคุณเพื่อหลีกเลี่ยง s เป็นสถานะ
Mongoose รวบรวมแบบจำลองสำหรับคุณเมื่อคุณเรียกใช้คำสั่งนี้
var schema = new mongoose.Schema({ name: 'string', size: 'string' });
var child = mongoose.model('child', schema);
อาร์กิวเมนต์แรกคือชื่อเอกพจน์ของคอลเล็กชันแบบจำลองของคุณ พังพอนลักษณะโดยอัตโนมัติสำหรับพหูพจน์lowercasedรุ่นของชื่อรุ่นของท่าน ดังนั้นตัวอย่างข้างต้น model child จึงมีไว้สำหรับคอลเลกชันเด็กในฐานข้อมูล
หมายเหตุ:.model()
ฟังก์ชั่นทำสำเนาของสคีมา ตรวจสอบให้แน่ใจว่าคุณได้เพิ่มทุกสิ่งที่คุณต้องการลงในสคีมารวมถึงตะขอก่อนโทร.model()
!