extension Request

An extension to Vapor’s Request type to add support for conveniently accessing MongoDB core types e.g. e.g. clients, databases, and collections which return futures on on the same EventLoop which the Request is on.

It is only recommended to utilize this extension if you are using Vapor’s EventLoopFuture APIs. If you are using Vapor’s async/await APIs, please use the global client accessible via Application.mongoDB.

This extension provides a Request.mongoDB.client property which you can use as follows from within a Request handler:

 req.mongoDB.client.db("home").collection("kittens", withType: Kitten.self).insertOne(myKitten)

We recommend utilizing this API to add extensions to Request for MongoDB databases and collections you frequently access, for example:

 extension Request {
     /// A collection with an associated `Codable` type `Kitten`.
     var kittenCollection: MongoCollection<Kitten> {
         self.mongoDB.client.db("home").collection("kittens", withType: Kitten.self)