#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();