1
  • How can be resolve executed in multiple function.

  • As I have multiple promise function and each function contain resolve message but don't how to print this on postman

  • If there is single function with promise then resolve message easily get executed but what if there is function of function then how can it be possible ?

  • Is this possible way to return resolve or reject message from one function to another?

  • As I am writing to pass resolve message in postman whenever my task is completed or reject message when there is some error

  • But after after writing return it still not returning the resolve message or reject message inside Postman

any idea how this can be resolve?

async function readFile(filePath) {}

async function getAllFile(filePath) {
const paths = await readFile(filePath);
}
async function filterFiles(filePath) {
const paths = await getAllFile(filePath);
}

function addDocument(data){
return new Promise((resolve, reject) => {
Document.create({
        name: data.name,
      },
    }).then(function (filePath) {
        filterFiles(filePath);
        let msg = "Document created Succesfully";
        return resolve(msg);
      })
      .catch(function (err) {
        return reject("Can't be updated please try again :) " + err);
      });
});
}
function updateDoc(data){
return new Promise((resolve, reject) => {
Document.update({
      name: data.name,
      }
      where: {
        product_id: data,
      },
    })
}).then(function (filePath) {
        getAllFile(filePath);
        let msg = "Updated Successfully";
        return resolve(msg);
      })
      .catch(function (err) {
        return reject("Can't be updated please try again :) " + err);
      });
}
function findDoc(data){
return new Promise((resolve, reject) => {
Document.findAll(
      {
      raw:true,
      },
      {
      name: data.name,
      }
      where: {
        product_id: data,
      },
    })
}).then(function (product) {
        if(product.length===0){
        addDocument(product);
      let msg="task completed";
      return resolve(msg,product);
        else{
        return resolve(updateDoc(product));
        }
      })
      .catch(function (err) {
        return reject("Can't be updated please try again :) " + err);
      });
}
function findDoc(data){
return new Promise((resolve, reject) => {
Document.findAll(
      where: {
        product_id: data.id,
      },
    })
}).then(function (product) {
      findDoc(product);
      let msg="task completed";
      return resolve(msg,product);
      })
      .catch(function (err) {
        return reject("Can't be updated please try again :) " + err);
      });
}

How can i get resolve message in postman

  • you can find the answer in the following posts. This is similar question to those. https://stackoverflow.com/questions/67156313/how-to-return-a-promise-function-using-node-js/67157813#67157813 https://stackoverflow.com/questions/67192232/resolve-and-reject-issue-using-node-js – pritampanhale Apr 22 '21 at 12:23

1 Answers1

0

It's hard for me to test your codes but it's quite possible to return resolve, reject messages in the response object.

If you want to pass a reject message through 3 promise for example and return a response you need use try, catch blocks, you can check this example:

// index.js
const express = require('express')
const app = express()
const port = 3000


const responder1 = (error, message) => {
    return new Promise((resolve, reject) => {
        if (error) {
            reject(error);
            return;
        }
        resolve(message);
    });
};
const responder2 = (error, message) => {
    return new Promise((resolve, reject) => {
        if (error) {
            reject(error);
            return;
        }
        resolve(message);
    });
};
const responder3 = (error, message) => {
    return new Promise((resolve, reject) => {
        if (error) {
            reject(error);
            return;
        }
        resolve(message);
    });
};


app.use('/', async (req, res) => {

    let result;
    try {
        const error = new Error("This is a error message.");
        result = await responder1(error, null);
    } catch (error1) {
        try {
            await responder2(error1, null);
        } catch (error2) {
            try {
                await responder3(error2, null)
            } catch (error3) {
                res.send({
                    success: 0,
                    message: error3.message
                });
                return;
            }
        }
    }

    res.send({
        success: 0,
        message: result
    });
});



app.listen(port, () => {
    console.log(`Example app listening at http://localhost:${port}`)
})

And if you want to pass resolve message:

const express = require('express')
const app = express()
const port = 3000


const responder1 = (error, message) => {
    return new Promise((resolve, reject) => {
        if (error) {
            reject(error);
            return;
        }
        resolve(message);
    });
};
const responder2 = (error, message) => {
    return new Promise((resolve, reject) => {
        if (error) {
            reject(error);
            return;
        }
        resolve(message);
    });
};
const responder3 = (error, message) => {
    return new Promise((resolve, reject) => {
        if (error) {
            reject(error);
            return;
        }
        resolve(message);
    });
};


app.use('/', async (req, res) => {

    let result = await responder3(null, await responder2(null, await responder1(null, "This is a test message.")));

    res.send({
        success: 0,
        message: result
    });
});



app.listen(port, () => {
    console.log(`Example app listening at http://localhost:${port}`)
})
Murat Colyaran
  • 2,075
  • 2
  • 8
  • 27