Node.js 在循环中使用mongoose保存到mongodb

Node.js 在循环中使用mongoose保存到mongodb,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我想多次保存一个对象,对date字段进行更改—每次迭代增加一个月 由于节点异步特性,for循环无法工作 const saveMany = (req, res, obj, data) => { let saves = []; if (data.frequency === 'monthly') { let i = 0; for (let i = 0; i < data.reccuring_length; i++) {

我想多次保存一个对象,对date字段进行更改—每次迭代增加一个月

由于节点异步特性,for循环无法工作

const saveMany = (req, res, obj, data) => {
    let saves = [];
    if (data.frequency === 'monthly') {
         let i = 0;
         for (let i = 0; i < data.reccuring_length; i++) {
            const newEntry = new obj(data);
            if (i != 0) newEntry.created_date.addMonths(1) //using datejs
            newEntry.save((err, entry) => {
                if (err) {
                    return res.status(400).send({
                        message: err
                    });
                }
                saves.push(entry);
            })

        }) //end of for loop
        return res.json(saves)

    } //end of if
}
const saveMany=(请求、恢复、对象、数据)=>{
让我们保存=[];
如果(data.frequency==‘每月’){
设i=0;
for(设i=0;i{
如果(错误){
返回资源状态(400)。发送({
信息:呃
});
}
保存。推送(输入);
})
})//for循环结束
返回res.json(保存)
}//如果结束
}
我看过关于promises/async库的内容,但无法实现(虽然我是新手,但可能会遗漏一些明显的东西)

感谢您的帮助:)

编辑:

找到了这个相关的链接,但如果有人有其他建议,那就太好了

编辑2:


刚刚意识到我的代码有camelcase和snake case,在我的代码中进行了更改,使所有对象数据都变成了snake case。

我认为您可以这样做:

const saveMany = async (req, res, obj, data) => {
let saves = [];
if (data.frequency === 'monthly') {
     let i = 0;
     for (let i = 0; i < data.reccuring_length; i++) {
        const newEntry = new obj(data);
        if (i != 0) newEntry.created_date.addMonths(1) //using datejs
        try{
          const entry= await newEntry.save();
          saves.push(entry);
        } catch(err) {
          return res.status(400).send({ message: err });
        }
    }) //end of for loop
    return res.json(saves)

} //end of if
}
const saveMany=async(请求、恢复、对象、数据)=>{
让我们保存=[];
如果(data.frequency==‘每月’){
设i=0;
for(设i=0;i
使用,这样你就可以调用
,然后
兑现所有承诺(保存所有内容后)@molamk会尝试一下。如果我能让它工作,谢谢你的反馈。唯一的问题是代码没有抛出错误,它只是不保存任何东西。嗯,好吧。。。你能复制你的“obj”模式吗?你的“数据”对象里面是什么?此外,函数的调用示例也会有所帮助(查看是否通过示例传递模型)。我使用这种代码,它完美地保存了我的文档。也许记录的长度是0,或者频率不是每月一次。你是对的,工作是一个梦想。我输入了一个拼写错误,所以没有保存任何内容。多谢各位