'Not able to return value from promise in Nodejs

I have written the following code in Nodejs which is saving data in MongoDB:

function insertDoc(db,data){
    return new Promise(resolve => {
      callback=db.collection('AnalysisCollection').insertOne(data).then(function(response,obj){
        console.log("Inserted record"); 
           resolve(obj);
        //console.log(obj); 
          //  response.on('end',function(){
          //    resolve(obj);
          //  });  
        //return resolve(obj);
    }).then(() => { return obj }
    ).catch(function(error){
        throw new Error(error);
    });
    })
  }

I am calling the above function from the main function like this:

async function cosmosDBConnect(nluResultJSON){

    try{
        //console.log("Inserting to cosmos DB");
        console.log(nluResultJSON);        
        var url = config.cosmos_endpoint;
        var result="";

        var data = JSON.parse(JSON.stringify(nluResultJSON));

        MongoClient.connect(url, function(err, client) {
          assert.equal(null, err);
          var db = client.db('NLUAnalysisDB');          
         // insertDoc(db, data, function() { 
          result=insertDoc(db, data, function() { 
            console.log(result);                      
          client.close();
          //return data._id;
          });          
          });

          
    }
    catch (e) {        
        console.log(e);
      }
}

module.exports = { cosmosDBConnect };

But in cosmosDBConnect, I am getting 'undefined' for the result, though in insertDoc I am getting the output for'obj' with _id for the inserted record.

Please help me to return this _id to cosmosDBConnect.



Solution 1:[1]

result = insertDoc(db, data).then((data) => {
    console.log(data);
}).catch(err => console.error(err));

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Tyler2P