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();
解决方案
2个函数不是同步的。好吧,它们是内部同步的,但不适合外部世界。您可以将其包装在 IIFE 中:
(async () => {
await deleteData();
await importData()
})()
或与.then()
deleteData().then(importData).then(()=>console.log('done'))
async
表示该函数返回一个承诺。所以你应该像对待承诺一样对待它们
推荐阅读
- ldap - WSO2:LDAP 辅助用户存储的套接字超时
- android - 响应设计和两个片段
- javascript - 这段代码有什么问题(德语)
- xml - 当有多个具有不同属性的节点时选择 XML
- google-apps-script - 如何在 Google 工作表的 Google 脚本中一步清除、导入范围值和冻结值?
- java - 在java中解析一个XML字符串
- facebook - 我的机器人需要 Facebook 业务验证
- regex - 我如何使用正则表达式仅识别熊猫数据框中连续的 4-5 位数字
- python - 您如何指定应将特定的 Keras 层分配给 CPU?
- c# - 如何在没有任何 Dapper 缓存的情况下执行 SQL 查询?