如何在Sequelize Node.js中执行for循环后执行find all方法?

mlnl4t2r  于 2023-05-28  发布在  Node.js
关注(0)|答案(1)|浏览(144)

我有一个for循环。我把每个值都插入到一个表中。之后,当我使用findAll/findOne方法查询时,它显示为null。我想在执行for循环后获取User_Paper表的数据。

const newPaper = new Paper({
                    title,
                    abstract,
                    contributor,
                    contributor: authors,
                    paper_file: file,
                    paper_topicId: ptopic.id,
                    categoryId: c1.id,
                    postingDate,
                    postingTime
                  });
                  newPaper.save().then(new_paper=> {
               
                    for (let i = 0; i < new_paper.contributor.length; i++) {
                      const newUser_Paper = new User_Paper({
                        userId: null,
                        username: new_paper.contributor[i],
                        paperId: new_paper.id,
                      });

                      newUser_Paper.save()
                     
                     }
                     User_paper.findOne({
                       where: {
                          username: : Touhid,
                          paperId: new_paper.paperId
                       }
                     }).then(x=>{
                         console.log(x)
                     })
                    })

之后,输出显示为null。我想在执行for循环后获取User_Paper表的数据。
这是我的两张table。请帮帮我。PaperUser_Paper

v7pvogib

v7pvogib1#

获取null的原因是您没有等待保存在for循环中创建的User_Paper对象。在查询这些对象之前,需要对每个对象调用保存()。

newUser_Paper.save().then(() => {
      // Now you can query for the User_Paper objects
      User_paper.findOne({
        where: {
          username: :Touhid,
          paperId: new_paper.paperId
        }
      }).then(x => {
        console.log(x);
      });
    });
  }

相关问题