Ví dụ: mã này dẫn đến một bộ sưu tập có tên "dữ liệu" được tạo
var Dataset = mongoose.model('data', dataSchema);
Và mã này dẫn đến một tập hợp có tên "người dùng" được tạo
var User = mongoose.model('user', dataSchema);
Cảm ơn
Ví dụ: mã này dẫn đến một bộ sưu tập có tên "dữ liệu" được tạo
var Dataset = mongoose.model('data', dataSchema);
Và mã này dẫn đến một tập hợp có tên "người dùng" được tạo
var User = mongoose.model('user', dataSchema);
Cảm ơn
Câu trả lời:
Mongoose đang cố tỏ ra thông minh bằng cách đặt tên bộ sưu tập của bạn thành số nhiều. Tuy nhiên, bạn có thể buộc nó phải là bất cứ thứ gì bạn muốn:
var dataSchema = new Schema({..}, { collection: 'data' })
Cấu trúc API của mongoose.model là:
Mongoose#model(name, [schema], [collection], [skipInit])
Điều mà mongoose làm là, Khi không có đối số tập hợp nào được chuyển qua, Mongoose tạo ra một tên tập hợp bằng cách tổng hợp tên mô hình. Nếu bạn không thích hành vi này, hãy chuyển tên bộ sưu tập hoặc đặt tùy chọn tên bộ sưu tập lược đồ của bạn.
Thí dụ:
var schema = new Schema({ name: String }, { collection: 'actor' });
hoặc là
schema.set('collection', 'actor');
hoặc là
var collectionName = 'actor'
var M = mongoose.model('Actor', schema, collectionName);
Bắt đầu từ mongoose 5.x, bạn có thể tắt nó hoàn toàn:
mongoose.pluralize(null);
Bạn có thể thêm tên bộ sưu tập làm tham số thứ ba. Xem ví dụ bằng cách sử dụng 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);
Thêm dòng mongoose.pluralize(null)
trong tệp Mongoose của bạn sẽ ngăn chặn việc đa năng hóa tên bộ sưu tập. Bạn không cần thêm dòng này vào tệp mô hình của mình.
Như đã thấy ở đây .
Ở cuối xác định lược đồ của bạn trên dòng tiếp theo Sử dụng mã này
module.exports = mongoose.model("State", "StateSchema", "state")
Giả sử rằng trạng thái của bạn là những gì bạn muốn sử dụng trên db của mình để tránh các trạng thái
Mongoose biên dịch một mô hình cho bạn khi bạn chạy lệnh này
var schema = new mongoose.Schema({ name: 'string', size: 'string' });
var child = mongoose.model('child', schema);
Đối số đầu tiên là tên riêng của bộ sưu tập mà mô hình của bạn sử dụng. Mongoose tự động tìm kiếm phiên bản số nhiều, viết thường của tên kiểu máy của bạn. Do đó, với ví dụ trên, model con là tập hợp con trong cơ sở dữ liệu.
Lưu ý: Các .model()
chức năng tạo một bản sao của giản đồ. Đảm bảo rằng bạn đã thêm mọi thứ bạn muốn vào lược đồ, bao gồm cả hook, trước khi gọi .model()
!