Skip to content

how to switch database for tenant isolation #49

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);
            }
        }
    }
});

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions