这些函数调用有什么问题? Nodejs

时间:2020-07-01 17:04:41

标签: javascript

我做了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();

1 个答案:

答案 0 :(得分:0)

这两个功能不能同步。好吧,它们在内部同步,但不是在外部世界。您可以将其包装在IIFE中:

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

或与.then()

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

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