使用express.js插入MongoDB数据的空行



我想将数据添加到我的MongoDB集合中。我通过当地的Flask API获取这些数据。我正在React Frontend上获取数据,它显示得很好。我不知道为什么我不能在我的express nodejs后端上做同样的事情。我想获得相同的数据,并用它来构建我要存储的实体。

这就是我试图获取数据的方式

app.get('/', async (req, res) => {
let initialData = {};
axios.get('http://localhost:3000/details').then((res) => {
initialData = res.data;
});
const recruit = new RecruitModel({ email:initialData.email,
mobile_number:initialData.mobile_number,
name:initialData.name});
try {
await recruit.save()
res.send("inserted data")
} catch (error) {
console.log(error)
}
})

我很确定那里出了什么问题,其他地方都没有。因为如果我传递静态信息,它会被正确存储,没有问题。

在解决承诺之前,您正在保存到数据库的Recruit集合。由于要保存在Recruit集合中的数据取决于最初返回promise的API的结果,因此,请使用promise解析函数来等待其结果。

解决方案#1(使用.then函数(:

app.get('/', async (req, res) => {
let initialData = {};
try {
axios.get('http://localhost:3000/details').then((response) => {
initialData = response.data;
const recruit = new RecruitModel({
email: initialData.email,
mobile_number: initialData.mobile_number,
name: initialData.name,
});
recruit.save().then((response) => res.send('inserted data'));
});
} catch (error) {
console.log(error);
}
});

解决方案#2(使用异步等待关键字(:

app.get('/', async (req, res) => {
try {
const response = await axios.get('http://localhost:3000/details');
const recruit = new RecruitModel({
email: response.data.email,
mobile_number: response.data.mobile_number,
name: response.data.name,
});
await recruit.save();
res.send('inserted data');
} catch (error) {
console.log(error);
}
});

任何一种解决方案都适用于您的情况。