提问者:小点点

Nodejs+MongoDB无法配置异步等待


大家好,我有一个简单的问题不能解决。我正在获取文本数组,并尝试用翻译它,然后将它保存到MongoAtlas。这是我的密码

问题是代码下面的工作首先,所以我不能得到填充的数组在时间

var texts = ["Certain", "Deduce", "Marauders"];
var data = [];

for (const element of texts) {
  const res = translatte(element, { to: "fr" })
    .then((trns) => {
      data({ text: element, translated_text: trns.text });
      //when I console.log(data) I can get values
    })
    .catch((err) => {
      console.log("err transalte");
    });
}

//In the below of the for loop works first so it return []
console.log("updated", data);

然后我要把它保存起来

const tData = new Table({
  data: data,
  name: "Data1"
});

const promise = tData.save();

promise.then((saved) => {
  return res.json(saved);
});

共1个答案

匿名用户

null

我假设您使用的是基于末尾的语句的,因此您可以执行如下操作:

app.post("/my-route", async (req, res, next) => {
  try {
    var texts = ["Certain", "Deduce", "Marauders"];
    var data = [];

    for (const element of texts) {
      const res = await translatte(element, { to: "fr" })
        .then((trns) => {
          data.push({text: element, translated_text: trns.text});
        })
        .catch((err) => {
          console.log("err transalte");
        });
    }
    console.log("updated", data);

    const tData = new Table({data: data, name: "Data1"});

    tData
      .save()
      .then((saved) => {
        res.status(200).json(saved);
      })
      .catch((error) => {
        res.status(400).json({status: 400, message: error.message});
      });
  } catch (error) {
    res.status(400).json({status: 400, message: error.message});
  }
});

相关问题