Почему Мангуст всегда добавляет s в конец имени моей коллекции
например, этот код приводит к созданию коллекции под названием "datas"
var Dataset = mongoose.model('data', dataSchema);
и этот код приводит к созданию коллекции под названием "пользователи"
var User = mongoose.model('user', dataSchema);
спасибо
4 ответов:
Мангуст пытается быть умным. Однако вы можете заставить его быть тем, что вы хотите:
var dataSchema = new Schema({..}, { collection: 'data' })
структура API мангуста.модель такая:
Mongoose#model(name, [schema], [collection], [skipInit])что мангусты сделать, это, что, когда нет аргументов коллекция передается, Мангуст производит название коллекции совмещения наименование модели. Если вам не нравится такое поведение, либо передайте имя коллекции, либо установите параметр schemas collection name.
пример:
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');
вы можете добавить имя коллекции в качестве третьего параметра. См. пример использования 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;
Comments