From c62ae2e1347b8a734380a65104cc01df60baa6db Mon Sep 17 00:00:00 2001 From: NormVg <87635928+NormVg@users.noreply.github.com> Date: Tue, 10 Dec 2024 22:21:33 +0530 Subject: [PATCH] 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 --- README.md | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) diff --git a/README.md b/README.md index 7fefe5f..05cc0c0 100644 --- a/README.md +++ b/README.md @@ -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/?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)