Comments (4)
There is currently no way to add mongoose schema hooks that depend on any @Injectable() services using the nest MongooseModule.
Actually, why not? You should be able to create, let's say, SchemaHooks
class that would inject schema + all required services and register hooks in onModuleInit()
lifecycle method.
from mongoose.
@kamilmysliwiec Could you possibly provide an example of that? As far as I can see you cannot register schema hooks after connection.model()
is called, which the MongooseModule
does in its providers factory.
from mongoose.
Oh well, it seems that this behavior has changed between 4.x.x -> 5.x.x releases. In this case, you can avoid using .forFeature()
and create providers manually:
{
provide: getModelToken('Cat'),
useFactory: (connection) => {
const schema = ...
// add hooks here
return connection.model('Cat', schema);
},
inject: [getConnectionToken('YOUR_CONNECTION_NAME')],
},
from mongoose.
@kamilmysliwiec sorry to ask on a closed issue. I'm trying to create my providers manually as you posted here, but I get a ** Nest can't resolve dependencies of the useFactory (?). Please verify whether [0] argument is available in the current context.**
This is my code on the test:
let catModel;
const module = await Test.createTestingModule({
providers: [
CatsService,
{
provide: getModelToken('Cat'),
useFactory: (connection) => {
catModel = connection.model('Cat', CatSchema);
return catModel;
},
inject: [getConnectionToken('MyDatabase')]
}
]
}).compile();
and my service looks like this:
@Injectable()
export class CatsService {
constructor(@InjectModel('Cat') private readonly catModel: Model<Cat>) {}
async create(createCatDto: CreateCatDto): Promise<Cat> {
const createdCat = new this.catModel(createCatDto);
return await createdCat.save();
}
async findAll(): Promise<Cat[]> {
return await this.catModel.find().exec();
}
}
What am I doing wrong?
from mongoose.
Related Issues (20)
- Subdocuments Array has not id() and remove()-method HOT 3
- Don't extend `MongooseModuleOptions` from `Record<string, any>` HOT 4
- Using getters and setters with in super class HOT 1
- Issue with RXJS dependency (0 , rxjs_1.lastValueFrom) is not a function HOT 1
- How do I integrate @casl/mongoose and how do I operate to modify the Model? HOT 1
- How do I integrate @casl/mongoose, it doesn't seem to compile through. HOT 1
- NestJS: Mongo one to many relationship doesn't work HOT 1
- cache connection HOT 1
- Support compound index in @Schema decorator HOT 1
- Unexpected ref function behaviour HOT 1
- OverwriteModelError: Cannot overwrite `X` model once compiled. HOT 2
- @Prop() schemaType on Map not working HOT 3
- findOneAndUpdate fails with multi arrayFilters in nested arrays HOT 1
- Unable to connect for non-SSL connections when specifying dbName in URI HOT 1
- Update mongoose to v8 HOT 2
- InjectModel decorator for multiple databases is broken since version 9.1.0 HOT 1
- When set connectionName to useClass, Populate Error: Schema hasn't been registered for model HOT 1
- Injecting services into MongooseModule.forFeatureAsync not triggering the middleware hooks HOT 1
- @Prop() schemaType on Map not working.
- IntersectionType and Prop decorator HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mongoose.