Description
I want to separate logic between Nuxt 3 Layers and different DB connections:
- For ecommerce logic such as customers, orders, payments, etc.
- And for CMS logic such as pages, blocks, etc.
I want to have a few DB connections. Is it possible? If not, can I expect this feature will be delivered soon?
I see it's possible for SQL databases for Nitro OOTB. I want to have the same for MongoDB:
https://nitro.build/guide/database#configuration
I also checked your repo and docs, I see you support more than one defineMongooseConnection
:
https://nuxt-mongoose.nuxt.space/docs/api/utils#definemongooseconnection
But I suspect it doesn't support different models for different connections. I guess, all the used records will be just duplicated between the connections.
I expect separation by different connections and models dirs.
// nuxt.config.ts
export default defineNuxtConfig({
mongoose: [
{
uri: 'process.env.MONGODB_CMS_URI',
options: {},
modelsDir: 'models/cms',
devtools: true,
},
{
uri: 'process.env.MONGODB_ECOMMERCE_URI',
options: {},
modelsDir: 'models/ecommerce',
devtools: true,
}
],
})
Usage:
page.scheme.ts
inmodels/cms
directory has to be automatically prefixed likeCmsPage
:
// layers/cms/server/api/pages/index.get.ts
export default defineEventHandler(async (event) => {
try {
return await CmsPage.find({})
}
catch (error) {
return error
}
})
user.scheme.ts
inmodels/ecommerce
directory has to be automatically prefixed likeEcommerceUser
:
// layers/ecommerce/server/api/users/index.get.ts
export default defineEventHandler(async (event) => {
try {
return await EcommerceUser.find({})
}
catch (error) {
return error
}
})
Just keep in mind that the folders have to be in different layers, just merged in result application, like
root # Project root directory
|
|—— layers # Custom Nuxt Layers for core functionalities
| |—— core # Core layer with core utilities and composables
| |—— cms # Content Management System functionality
| |—— ecommerce # Ecommerce functionality
|
|—— apps # Nuxt 3 applications for different platform parts
|—— storefront # Storefront application for public user interactions
|—— admin # Admin application for management
More about layers here:
Let me know please, if you don't plan to support the described feature, I'd try to implement it for my own project. But it'd be nice if you advise me on what to pay my attention.
It also could solve the previous Issues: