Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/baileytincher/middy-mongoose-connector
Mongoose connection middleware for Middy.js and the Serverless Framework
https://github.com/baileytincher/middy-mongoose-connector
Last synced: 4 days ago
JSON representation
Mongoose connection middleware for Middy.js and the Serverless Framework
- Host: GitHub
- URL: https://github.com/baileytincher/middy-mongoose-connector
- Owner: baileytincher
- License: mit
- Created: 2020-03-04T14:31:29.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-05T09:02:56.000Z (about 2 years ago)
- Last Synced: 2024-12-20T08:27:41.685Z (about 1 month ago)
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/middy-mongoose-connector
- Size: 1.15 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Mongoose Connector
`yarn add middy-mongoose-connector`
This is a [mongoose.js](https://mongoosejs.com/) connection middleware for the [middy.js](https://middy.js.org/) middleware framework.
```javascript
const log = (shouldLog, message) => (shouldLog ? console.log(message) : null);/** A database connection middleware that creates or persists a connection
* to MongoDB via Mongoose.
*
* Database connections in Lambda can persist across multiple function calls,
* and for performance you likely do not want to close it after each use.
*
* @param {Object} opts
* @param {Object} opts.mongoose An instance of mongoose
* @param {String} opts.databaseURI The full MongoDB connection string
* @param {mongoose.connectionOptions} opts.connectionOpts Options object passed to mongoose.connect
* @param {Boolean} opts.shouldClose Whether or not to close the database connection after execution
* @param {Boolean} opts.shouldLog Whether or not to log opening/closing status for connections
*
* @return {Object} The middleware.
*/
export default ({
mongoose,
databaseURI,
connectionOpts = {
useCreateIndex: true,
useFindAndModify: false,
useNewUrlParser: true,
useUnifiedTopology: true
},
shouldClose = false,
shouldLog = true
}) => ({
before: async () => {
if (mongoose.connection.readyState === 1) {
log(shouldLog, '=> Using existing database connection');
} else {
log(shouldLog, '=> Using new database connection');
await mongoose.connect(databaseURI, connectionOpts);
}
},
after: async () => {
if (shouldClose && mongoose.connection.readyState !== 0) {
log(shouldLog, '=> Closing database connection');
await mongoose.connection.close();
}
}
});
```## Help Wanted!
Currently the middleware requires you to import mongoose and pass it in as an option to properly
establish the connection. This is a side effect of how NPM manages dependencies. Ideally This
middleware would specify mongoose as a peer dependency and share the same mongoose instance
with the project it's used in. I could not get this to work with webpack, but if you are familiar
then please submit a PR!