4 Commits
v1.0.6 ... main

Author SHA1 Message Date
37b5e425c4 Update package.json
Some checks failed
studio-nuxt-build / build-and-deploy (18, ubuntu-latest) (push) Has been cancelled
2025-01-20 19:13:58 +00:00
32deb047c5 Update package.json
Some checks are pending
studio-nuxt-build / build-and-deploy (18, ubuntu-latest) (push) Waiting to run
2025-01-20 18:51:38 +00:00
4036c56010 feat: disable autoconnect (#69) 2024-12-14 13:53:39 -07:00
c62ae2e134 docs: enhance Documentation (#70)
* docs: improve configuration and usage examples for

- Added a section for quick setup using  without additional configuration.
- Highlighted the importance of specifying  to connect to existing collections.
- Updated  examples with simplified schemas.

* Update README.md
2024-12-10 09:51:33 -07:00
4 changed files with 117 additions and 3 deletions

106
README.md
View File

@ -27,10 +27,116 @@ export default defineNuxtConfig({
}) })
``` ```
### 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:password@cluster0.mongodb.net/<database-name>?retryWrites=true&w=majority"
```
> 🔹 Replace `username`, `password`, and `<database name>` 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 ### 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). 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 ## License
[MIT License](./LICENSE) [MIT License](./LICENSE)

View File

@ -39,6 +39,7 @@
"dist" "dist"
], ],
"scripts": { "scripts": {
"prepare": "npm run build",
"build": "nuxt-module-build && npm run build:client", "build": "nuxt-module-build && npm run build:client",
"build:client": "nuxi generate client", "build:client": "nuxi generate client",
"dev": "nuxi dev playground", "dev": "nuxi dev playground",
@ -49,8 +50,8 @@
"lint": "eslint . --fix" "lint": "eslint . --fix"
}, },
"dependencies": { "dependencies": {
"@nuxt/devtools-kit": "1.0.8", "@nuxt/devtools-kit": "^1.3.9",
"@nuxt/devtools-ui-kit": "1.0.8", "@nuxt/devtools-ui-kit": "^1.3.9",
"@nuxt/kit": "^3.9.3", "@nuxt/kit": "^3.9.3",
"@vueuse/core": "^10.7.2", "@vueuse/core": "^10.7.2",
"defu": "^6.1.4", "defu": "^6.1.4",

View File

@ -1,11 +1,17 @@
import mongoose from 'mongoose' import mongoose from 'mongoose'
import type { DevtoolsServerContext, ServerFunctions } from '../types' import type { DevtoolsServerContext, ServerFunctions } from '../types'
import { logger } from '@nuxt/kit'
import { setupDatabaseRPC } from './database' import { setupDatabaseRPC } from './database'
import { setupResourceRPC } from './resource' import { setupResourceRPC } from './resource'
export function setupRPC(ctx: DevtoolsServerContext): ServerFunctions { export function setupRPC(ctx: DevtoolsServerContext): ServerFunctions {
mongoose.connect(ctx.options.uri, ctx.options.options) if (!ctx.options.uri) {
ctx.options.uri = ''
logger.warn('MongoDB autoconnect is disabled, configure `uri` to enable.')
} else {
mongoose.connect(ctx.options.uri, ctx.options.options)
}
return { return {
getOptions() { getOptions() {

View File

@ -9,6 +9,7 @@ import { useRuntimeConfig } from '#imports'
export async function defineMongooseConnection({ uri, options }: { uri?: string; options?: ConnectOptions } = {}): Promise<void> { export async function defineMongooseConnection({ uri, options }: { uri?: string; options?: ConnectOptions } = {}): Promise<void> {
const config = useRuntimeConfig().mongoose const config = useRuntimeConfig().mongoose
const mongooseUri = uri || config.uri const mongooseUri = uri || config.uri
if (!(mongooseUri as string).trim()) return
const mongooseOptions = options || config.options const mongooseOptions = options || config.options
try { try {