J'ai le code suivant pour le modèle.
import { DatabaseServer } from './database-server';
import { ProjectGroup } from './project-group';
import { ProjectUser } from './project-user';
import { prop, getModelForClass, ReturnModelType, modelOptions } from '@typegoose/typegoose';
import { defaultTransform, ModelBase } from '../general/model-base';
import { ObjectID } from 'mongodb';
import { Connection } from 'mongoose';
import { BeAnObject } from '@typegoose/typegoose/lib/types';
export class Datasource extends ModelBase {
@prop()
databaseServer?: DatabaseServer;
@prop()
databaseServerId?: ObjectID;
@prop()
datasource?: Datasource[];
@prop()
name?: string;
@prop()
projectGroups?: ProjectGroup[];
@prop()
projectUsers?: ProjectUser[];
}
const DatasourceModel = (
connection: Connection,
): ReturnModelType<typeof Datasource, BeAnObject> => {
return getModelForClass(Datasource, {
...defaultTransform,
...{
existingConnection: connection,
},
});
};
export { DatasourceModel };
Et j'utilise le modèle ci-dessus comme suit.
await DatasourceModel(await this.masterContext).find({})
Où le contexte principal est défini comme suit.
import {
Connection,
createConnection
} from 'mongoose';
export class MasterContext {
get context(): Promise<Connection> {
if (!this.m_context) {
this.m_context = createConnection('mongodb://localhost/Master', {
useNewUrlParser: true,
useUnifiedTopology: true,
});
}
return this.m_context;
}
private m_context: Promise<Connection>;
}
Je reçois l'erreur suivante.
Operation datasources.find() buffering timed out after 10000m
Si je change le nom de la classe de export class Datasource
à tout autre nom (par exemple export class Datumsource
), alors l'erreur ne se produit pas.
Alors, c'est Datasource
mot-clé réservé dans MongoDb ou Mongoose ou Typegoose ?