首页 > 解决方案 > 这些函数调用有什么问题?节点

问题描述

我制作了 2 个函数将 json 文件中的数据导入数据库,但仅当我单独调用 importData 函数时才起作用。但是如果我调用 deleteData 然后 importData 数据库是空的。

 const tours = JSON.parse(
  fs.readFileSync(`${__dirname}/tours-simple.json`, 'utf-8')
);


const deleteData = async () => {
  try {
    await Tour.deleteMany();
  } catch (error) {
    console.log(error);
  }
};

//Import data into db
const importData = async () => {
  try {
    await Tour.create(tours);
    console.log('Data successfully loaded!');
  } catch (error) {
    console.log(error);
  }
};

deleteData();
importData();

标签: javascript

解决方案


2个函数不是同步的。好吧,它们是内部同步的,但不适合外部世界。您可以将其包装在 IIFE 中:

(async () => {
   await deleteData();
   await importData()
})()

或与.then()

deleteData().then(importData).then(()=>console.log('done'))

async表示该函数返回一个承诺。所以你应该像对待承诺一样对待它们


推荐阅读