Par exemple, ce code entraîne la création d'une collection appelée "données"
var Dataset = mongoose.model('data', dataSchema);
Et ce code entraîne la création d'une collection appelée "utilisateurs"
var User = mongoose.model('user', dataSchema);
Merci
Mongoose essaie d'être intelligent. Vous pouvez cependant le forcer à être ce que vous voulez:
var dataSchema = new Schema({..}, { collection: 'data' })
La structure de l'API de mongoose.model est la suivante:
Mongoose#model(name, [schema], [collection], [skipInit])
Ce que fait la mangouste, c'est que, quand aucun argument de collection n'est passé, Mongoose produit un nom de collection en pluralisant le nom du modèle. Si vous n'aimez pas ce comportement, passez un nom de collection ou définissez l'option de nom de collection de schémas.
Exemple:
var schema = new Schema({ name: String }, { collection: 'actor' });
ou
schema.set('collection', 'actor');
ou
var collectionName = 'actor'
var M = mongoose.model('Actor', schema, collectionName);
À partir de mongoose 5.x, vous pouvez le désactiver complètement:
mongoose.pluralize(null);
Vous pouvez simplement ajouter une chaîne comme troisième argument pour définir le nom réel de la collection. Étendre vos exemples, pour conserver les noms comme data
et user
respectivement:
var Dataset = mongoose.model('data', dataSchema, 'data');
var User = mongoose.model('user', dataSchema, 'user');
Vous pouvez ajouter le nom de la collection comme troisième paramètre. Voir l'exemple en utilisant 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);
L'ajout de la lignemongoose.pluralize(null)
dans votre fichier Mongoose empêchera la pluralisation du nom de la collection. Vous n'avez pas besoin d'ajouter cette ligne à vos fichiers de modèle.
Comme vu ici .