例如,此代码会创建一个名为“datas”的集合
var Dataset = mongoose.model('data', dataSchema);
这段代码会创建一个名为“users”的集合
var User = mongoose.model('user', dataSchema);
谢谢
Mongoose 试图通过使您的收藏名称复数来变得聪明。但是,您可以强制它成为您想要的任何东西:
var dataSchema = new Schema({..}, { collection: 'data' })
mongoose.model 的 API 结构是这样的:
Mongoose#model(name, [schema], [collection], [skipInit])
mongoose 所做的是,当没有传递集合参数时,Mongoose 通过复数模型名称来生成集合名称。如果您不喜欢这种行为,请传递集合名称或设置您的模式集合名称选项。
例子:
var schema = new Schema({ name: String }, { collection: 'actor' });
或者
schema.set('collection', 'actor');
或者
var collectionName = 'actor'
var M = mongoose.model('Actor', schema, collectionName);
从 mongoose 5.x 开始,您可以完全禁用它:
mongoose.pluralize(null);
您可以简单地添加一个字符串作为第三个参数来定义集合的实际名称。data
扩展您的示例,以user
分别保留名称:
var Dataset = mongoose.model('data', dataSchema, 'data');
var User = mongoose.model('user', dataSchema, 'user');
//Mongoose's definition file. NOT your model files
1 const mongoose = require("mongoose");
2 mongoose.pluralize(null);
mongoose.pluralize(null)
在 Mongoose 文件中添加该行将防止集合名称复数。您不需要将此行添加到模型文件中。
如此处所见。
您可以将集合名称添加为第三个参数。请参阅使用 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;
在下一行定义您的架构结束时使用此代码
module.exports = mongoose.model("State", "StateSchema", "state")
假设您的状态是您想在数据库上使用的状态,以避免 s 作为状态
当您运行此命令时,Mongoose 会为您编译模型
var schema = new mongoose.Schema({ name: 'string', size: 'string' });
var child = mongoose.model('child', schema);
第一个参数是您的模型所针对的集合的单数名称。Mongoose 会自动查找您的型号名称的复数、小写版本。因此,对于上面的示例,模型 child 用于数据库中的 children 集合。
注意:该.model()
函数会复制模式。在调用.model()
!