Mongoose multiple save methods how to obtain the total save results?

  mongodb, question
Operation database file: projectDao.js
 var mongoose = require('mongoose')
 const Project = mongoose.model('Project')
 exports.createProject = async(data) => {
 data.m.projectModelId=data.m.projectModel.split(',')[0]
 data.m.projectModelName=data.m.projectModel.split(',')[1]
 delete data.m.projectModel
 let project = new Project(data.m)
 let flag1= false
 let flag2=false
 let flag3=false
 await project.save(function (err) {
 if (err) {
 flag1 = false
 return console.error(err)
 }else{
 flag1=true
 return Promise.resolve(flag1)
 }
 })
 console.log(flag1)
 let formModels = new ProjectData(data.formModels)
 await formModels.save(function (err) {
 if (err) {
 flag2 = false
 return console.error(err)
 }else{
 return flag2=true
 }
 })
 let tableModels = new ProjectData(data.tableModels)
 await tableModels.save(function (err) {
 if (err) {
 flag3 = false
 return console.error(err)
 }else{
 return flag3=true
 }
 })
 if(flag1&flag2&&flag3){
 return true
 }
 }

controller:

//create project apis
 exports.createProject = async (ctx) => {
 const result = projectDao.createProject(ctx.request.body)
 ctx.body = {
 result
 }
 }

As mentioned above, I want to realize that there are multiple save methods in the same method, one part is saved in one table and the other part is saved in another table. How to obtain the overall result after executing multiple save methods at the same time? Because Async and Await are asynchronous methods, the value of flag obtained outside is actually the same.

If the three save are related in sequence, that is, the id obtained after the first save is successfully saved is saved in the second save, how can it be better written?

exports.createProject =(data) => {
 data.m.projectModelId=data.m.projectModel.split(',')[0]
 data.m.projectModelName=data.m.projectModel.split(',')[1]
 delete data.m.projectModel
 let project = new Project(data.m)
 project.save(function (err, info) {
 if (err) {
 console.error(err)
 } else {
 for(let i=0;  i<data.formModels.length;  i++){
 let formModel = new ProjectData({projectId:info._id,projectSubmoduleId:data.formModels[i]._id,createUserId:info.createUserId,createUserName:info.createUserName})
 formModel.save(function (err,formData) {
 if (err) {
 return console.error(err)
 }else{
 return console.log(formData)
 }
 })
 }
 for(let i=0;  i<data.tableModels.length;  i++){
 let tableModel = new ProjectData({projectId:info._id,projectSubmoduleId:data.tableModels[i]._id,createUserId:info.createUserId,createUserName:info.createUserName})
 tableModel.save(function (err,tableData) {
 if (err) {
 return console.error(err)
 }else{
 return console.log(tableData)
 }
 })
 }
 }
 })
 }

Asynchronous process control is actually NodeJS’s basic knowledge and has no direct connection with MongoDB. What you should understand is how Promise works. If you need to save the above actions one by one, you should usePromise.each. But in fact, your several operations do not seem to have causal relationship from above, so it should be carried out more efficiently at the same time, that isPromise.all.
Your code looks a bit strange, I want to know

let project = new Project(data.m)

How is Project defined here, because

await project.save(function (err) {...}

There are alreadyawaitAnother onecallback, both should not appear at the same time.