javascript - 无法解决猫鼬上的“模型一旦编译就无法覆盖”错误
问题描述
问题:所以我正在尝试将 MongoDB 集成到我的 nextJs 项目中。这是一个连接到数据库的库文件。
import shopSchema from './Schemas/shopSchema';
let shopModelCached;
async function getShopModel(connectionUrl) {
if (!shopModelCached) {
try {
await mongoose.connect(process.env.MONGO_DB_CONNECTION_STRING);
const Shop = mongoose.model("shop", shopSchema);
shopModelCached = Shop;
} catch (err) {
throw err;
}
}
return shopModelCached;
}
export default getShopModel;
当我getServerSidedProps
在我的页面上调用该函数来获取我的商店模型时,它实际上什么都不做,只是调用上述函数来获取Shop
模型,然后执行简单的查询来填充道具。
export async function getServerSideProps(context) {
try {
const Shop = await getShopModel(
process.env.MONGO_DB_CONNECTION_STRING
);
const shop = await Shop.findOne({
shopcode: context.params.shopname,
}).exec();
return {
props: {
shop,
},
};
} catch (err) {
throw err;
}
}
当我重新编译模块时,这给我带来了错误。它说,'OverwriteModelError: Cannot overwrite 'shop' model once compiled.'.
我处理这个问题的方法是缓存模型,这样它就不会被覆盖,但不会徒劳。
解决方案
推荐阅读
- asp.net - 在 asp.net webapi 中预检后的 CORS 问题
- prolog - 检查列表是否在 Prolog 中被展平
- python - 使用 Pandas 通过数据框字典计算移动平均值
- c++ - 需要帮助在 Windows 10 上完成 {fmt} 的命令行安装
- c++ - 如何找到clang使用的库路径
- java - 给定一个整数N。java中大于N的最小整数是多少
- spring-boot - ModelMapper - 一个映射已经存在 - 两种配置
- c# - C#无法下载JDK15
- python - R 内核 - 在 nbviewer 中工作的 Jupyter 笔记本中的自定义 CSS
- java - 如何在Java中获取两个日期之间的工作日