首页 > 解决方案 > 导出多个函数但始终先运行默认函数

问题描述

抱歉描述不好,但我想创建一个“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() 添加到每个函数还是有一些更聪明的方法来做到这一点?

标签: javascriptreactjs

解决方案


带有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();

推荐阅读