Skip to content

how to switch database for tenant isolation #49

Open
@zailaib

Description

@zailaib

not working code

// tenant-isolation.js
import Utils from '~/server/Utils';

export default defineNuxtPlugin({
    name: 'switch-tenant-db',
    async setup(nuxtApp) {

        const url = nuxtApp.ssrContext?.event?.node?.req?.url;
        console.log("url is:", url);
        if (url == "/my" || url == "/login") {
            console.log("do not switch tenant db");
        } else {
            const cookieStr = nuxtApp.ssrContext?.event?.headers.get("cookie") || "";
            const cookies = Utils.parseCookiesByStr(cookieStr);
            console.log("cookies is:", cookies);
            const tenant_id = cookies.tenant_id;
            const dbName = `tenant_${tenant_id}`; // 根据租户标识符构建数据库名称
            console.log("switch tenant db");
            if (nuxtApp.ssrContext && nuxtApp.ssrContext.runtimeConfig) {
                nuxtApp.ssrContext.runtimeConfig = Object.assign({}, nuxtApp.ssrContext.runtimeConfig, {
                    mongoose: {
                        uri: nuxtApp.ssrContext.runtimeConfig.mongoose.uri,
                        options: {
                            dbName: dbName,
                        },
                        modelsDir: nuxtApp.ssrContext.runtimeConfig.mongoose.modelsDir
                    },
                  });
                console.log("after switch is:", nuxtApp.ssrContext?.runtimeConfig?.mongoose);
            }
        }
    }
});

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions