Не удается решить ошибку «Модель не может быть перезаписана после выполнения» на мангусте

#javascript #reactjs #mongodb #mongoose #next.js

Вопрос:

Проблема: Поэтому я пытаюсь интегрировать 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.'. что мой подход к обработке этого состоял в том, чтобы кэшировать модель, чтобы она не была перезаписана, но не зря.

Комментарии:

1. Почему вы вызываете подключение к БД Shop ?

2. @GabrielLupu Мне нужна только одна связь. Так что лучше получить модель при подключении к БД.