Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/arashsheyda/nuxt-mongoose
A Nuxt module for simplifying the use of Mongoose in your project.
https://github.com/arashsheyda/nuxt-mongoose
mongodb mongoose nuxt
Last synced: 2 days ago
JSON representation
A Nuxt module for simplifying the use of Mongoose in your project.
- Host: GitHub
- URL: https://github.com/arashsheyda/nuxt-mongoose
- Owner: arashsheyda
- Created: 2023-04-15T20:08:13.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-12-14T20:53:39.000Z (about 2 months ago)
- Last Synced: 2025-01-22T03:05:40.206Z (9 days ago)
- Topics: mongodb, mongoose, nuxt
- Language: TypeScript
- Homepage: https://docs.arashsheyda.me/nuxt-mongoose
- Size: 2.27 MB
- Stars: 81
- Watchers: 2
- Forks: 16
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
Awesome Lists containing this project
README
![nuxt-mongoose](https://docs.arashsheyda.me/modules/nuxt-mongoose.jpg)
Nuxt Mongoose
A Nuxt module for simplifying the use of Mongoose in your project.
## Installation
```bash
npx nuxi@latest module add nuxt-mongoose
```## Usage
### Setup
Add `nuxt-mongoose` to the `modules` section of your `nuxt.config.ts` file.
```ts
export default defineNuxtConfig({
modules: [
'nuxt-mongoose',
],
})
```### Configuration
You can configure the module by adding a `mongoose` section to your `nuxt.config` file:
```ts
export default defineNuxtConfig({
mongoose: {
uri: 'process.env.MONGODB_URI',
options: {},
modelsDir: 'models',
},
})
```By default, `nuxt-mongoose` will auto-import your schemas from the `models` directory in the `server` directory. You can change this behavior by setting the `modelsDir` option.
---
#### 🛠️ **Quick Setup Without Configuration**
If you prefer to use the default configuration, skip adding the `mongoose` section to your `nuxt.config.ts` file. Simply provide your MongoDB connection URI in a `.env` file like this:
```env
MONGODB_URI="mongodb+srv://username:[email protected]/?retryWrites=true&w=majority"
```> 🔹 Replace `username`, `password`, and `` with your MongoDB credentials and database name.
That's it! The module will automatically use the `MONGODB_URI` and default settings for your connection. No additional configuration is required.
---
*For more details about connection options, check out the [Mongoose documentation](https://mongoosejs.com/docs/connections.html#options).*
## API
### defineMongooseConnection
This function creates a new Mongoose connection. Example usage:
```ts
import { defineMongooseConnection } from '#nuxt/mongoose'export const connection = defineMongooseConnection('mongodb://127.0.0.1/nuxt-mongoose')
```### defineMongooseModel
This function creates a new Mongoose model with schema. Example usage:
```ts
import { defineMongooseModel } from '#nuxt/mongoose'export const User = defineMongooseModel('User', {
name: {
type: String,
required: true,
},
})
```**or you could use it like:**
```ts
export const User = defineMongooseModel({
name: 'User',
schema: {
name: {
type: String,
required: true,
},
},
})
```#### Connecting to an Existing Collection
If you need to connect to an **existing collection** in the database, you must specify the collection name using the `options` field. Otherwise, Mongoose will create a new collection based on the model name.
```ts
import { defineMongooseModel } from '#nuxt/mongoose'export const ProductSchema = defineMongooseModel({
name: 'Product',
schema: {
name: { type: String, required: true },
price: { type: Number, required: true },
stock: { type: Number, default: 0 },
},
options: {
collection: 'products_collection', // Ensure it uses the correct collection name
},
})
```---
#### Important Notes
- Using the `options.collection` field ensures that the model interacts with the specified collection (`products_collection` in the example above).
- Without this option, a new collection will be created using the pluralized version of the model name (e.g., `Products`).### Configuration
For detailed [configuration](https://docs.arashsheyda.me/nuxt-mongoose/getting-started/configuration) and usage instructions, please refer to our [documentation](https://docs.arashsheyda.me/nuxt-mongoose).
## License
[MIT License](./LICENSE)