Например, этот код приводит к созданию коллекции с именем "datas"
var Dataset = mongoose.model('data', dataSchema);
И этот код приводит к созданию коллекции под названием "пользователи"
var User = mongoose.model('user', dataSchema);
Спасибо
Например, этот код приводит к созданию коллекции с именем "datas"
var Dataset = mongoose.model('data', dataSchema);
И этот код приводит к созданию коллекции под названием "пользователи"
var User = mongoose.model('user', dataSchema);
Спасибо
Mongoose пытается быть умным. Однако вы можете заставить его быть тем, что хотите:
var dataSchema = new Schema({..}, { collection: 'data' })
Структура API mongoose.model такова:
Mongoose#model(name, [schema], [collection], [skipInit])
Что такое мангуста, так это: Когда аргумент коллекции не передан, Mongoose создает имя коллекции, плюризуя имя модели. Если вам не нравится это поведение, либо передайте имя коллекции, либо укажите опцию имени коллекции схем.
Пример:
var schema = new Schema({ name: String }, { collection: 'actor' });
или
schema.set('collection', 'actor');
или
var collectionName = 'actor'
var M = mongoose.model('Actor', schema, collectionName);
Вы можете просто добавить строку в качестве третьего аргумента, чтобы определить фактическое имя коллекции. Расширение ваших примеров, чтобы сохранить имена как data
и user
соответственно:
var Dataset = mongoose.model('data', dataSchema, 'data');
var User = mongoose.model('user', dataSchema, 'user');
Начиная с mongoose 5.x вы можете полностью отключить его:
mongoose.pluralize(null);
Вы можете добавить имя коллекции в качестве третьего параметра. См. Пример с помощью 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 definition file. NOT your model files
1 const mongoose = require("mongoose");
2 mongoose.pluralize(null);
Добавление строки mongoose.pluralize(null)
в ваш файл Mongoose предотвратит плюрализацию имени коллекции. Вам не нужно добавлять эту строку в файлы модели.
Как видно здесь.