【发布时间】:2022-11-11 09:43:15
【问题描述】:
我正在尝试将Sequelize 集成到我的Nuxt 3 项目中。但是,我无法弄清楚如何让它只加载一次,而不是在每次刷新页面/导航到另一条路线时重新加载它。
我在文档中找不到任何信息。甚至可能吗?
~/plugins/sequelize.server.ts
import { Sequelize } from "sequelize"
export default defineNuxtPlugin(async (nuxtApp) => {
const config = useRuntimeConfig()
const sequelize = new Sequelize(config.dbName, config.dbUser, config.dbPass,{
host: config.dbHost,
port: parseInt(config.dbPort),
dialect: 'mysql',
})
try {
await sequelize.authenticate()
// this log was executed every time I navigate to a new route
// or refreshing the browser.
console.log('Connection has been established successfully.');
} catch (error) {
console.error('Unable to connect to the database:', error);
}
return {
provide: {
db: sequelize
}
}
})
【问题讨论】:
-
如果我没记错的话(行为是否从 Nuxt2 更改为 Nuxt3?)但是在您拥有 Vue 实例的整个过程中都会加载一个插件。因此,如果您进行客户端导航,什么都不会改变:插件应该仍然是全局可用的并且只加载一次。如果您重新加载页面,您将核对整个应用程序,以便您重新下载它(我不明白您为什么不能)。
-
我不确定 Nuxt2 的行为,但我认为它应该按照你说的方式加载。但事实是,它在每次页面转换时都会重新初始化*,这很奇怪。 *可以通过查看消息来确认这一点:
Connection has been established successfully.,每次我导航到不同的页面时都会打印出来。 -
你有那个minimal reproducible example 吗?
-
啊啊啊……是我!我做了一个可组合的,在我的组件的一个
mounted钩子中初始化它并忘记删除它。在我尝试进行复制回购后,我立即意识到了这一点。傻我! ><
标签: vue.js sequelize.js nuxt.js nuxtjs3