我有一个基于Stripe和MERN堆栈的应用程序。我的问题是,当我命中端点以获取费用然后console.log结果时,我看到了一系列费用。哪个好因此,我决定使用forEach遍历它们并提取amount值。这可行。

但..

router.get('/all', (req, res) => {
    stripe.charges.list({
        limit: 3
    }).then(charges => {
        charges.data.forEach(charge => {
            return newData = new Charge({
                amount: charge.amount,
            })
        });
        newData
            .save()
            .then(charge => {
                res.json(charge)
            })
            .catch(err => console.log(err))
    })
})


当我使用forEach根据我的模型在MongoDB中创建记录时,即使阵列中至少有3个电荷,我也只能在数据库中保存一条记录。我该如何解决?

谢谢

最佳答案

您最好使用一个操作而不是多个操作。
为此:Model.insertMany方法。 https://mongoosejs.com/docs/api.html#model_Model.insertMany

伪代码:

const dataForSaving = charges.data.map((charge) => {
  return {
    amount: charge.amount,
  };
});

Collection.insertMany(dataForSaving, (err, docs) => {
  if (err) {
    throw new Error(err);
  }

  console.log(docs);
});

10-07 12:16