Perché la mangusta aggiunge sempre una s alla fine del nome della mia collezione

Ad esempio, questo codice genera una collezione chiamata “dati” in fase di creazione

var Dataset = mongoose.model('data', dataSchema); 

E questo codice si traduce in una raccolta chiamata “utenti” in fase di creazione

 var User = mongoose.model('user', dataSchema); 

Grazie

Mangusta sta cercando di essere intelligente. Puoi comunque forzarlo a essere quello che vuoi:

var dataSchema = new Schema({..}, { collection: 'data' })

La struttura API di mongoose.model è questa:

 Mongoose#model(name, [schema], [collection], [skipInit]) 

Quello che fa la mangusta è che, quando non viene passato alcun argomento di raccolta, Mongoose produce un nome di raccolta pluralizzando il nome del modello. Se non ti piace questo comportamento, passa il nome di una collezione o imposta l’opzione per il nome della collezione di schemi.

Esempio:

 var schema = new Schema({ name: String }, { collection: 'actor' }); 

o

 schema.set('collection', 'actor'); 

o

 var collectionName = 'actor' var M = mongoose.model('Actor', schema, collectionName); 

È sufficiente aggiungere una stringa come terzo argomento per definire il nome effettivo per la raccolta. Estendendo i tuoi esempi, per mantenere i nomi come data e user rispettivamente:

 var Dataset = mongoose.model('data', dataSchema, 'data'); var User = mongoose.model('user', dataSchema, 'user'); 

È ansible aggiungere il nome della raccolta come terzo parametro. Guarda l’esempio usando 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("User", UserSchema.schema,"User"); export = schema;