экспорт нескольких функций, но всегда сначала запускайте функцию по умолчанию

#javascript #reactjs

Вопрос:

Извините за плохое описание, но я хотел бы создать «service.js» -файл, в который я экспортирую несколько функций, извлекающих данные из базы данных. что-то вроде:

 ...
import Person from '../models/Person'
import dbConnect from "../lib/dbConnect";

await dbConnect()

const save = async (person) => {
    const savedPerson = await Person.save(person)
    return savedPerson
}

const geAll = async () => {
    const persons = await Person.find({})
    return persons
}
...

export default { getAll, save };  
 

Но как мне всегда запускать DBConnect (), когда в коде используются экспортируемые функции ? нужно ли мне добавлять функцию await DBConnect() для каждой функции или есть какой-то более разумный способ сделать это ?

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

1. Или вы могли бы всегда создавать объект и вызывать конструктор await dbConnect() .

2. Просто позвоните dbConnect() , когда ваш основной компонент приложения монтируется.

Ответ №1:

Как насчет класса с await dbConnect() конструктором on? Что-то вроде:

 class MyClass {
   constructor() {
     return (async () => {
        await dbConnect();
        return this; // new instance created
    })();
   }
   async save(person) {
      const savedPerson = await Person.save(person)
      return savedPerson
   }

    async geAll() {
      const persons = await Person.find({})
      return persons
    }

}
 

Затем:

 const myClass = await new MyClass(); // <-- this calls dbConnect()
myClass.geAll();