简体   繁体   中英

How to use another promise in a function which returns a new promise?

I started learning Promises in JS and I am trying to replace my existing callback logic using promises. I wrote a function which returns a new promise, and also uses a promise of a database instance to retrieve the data. However, i am not sure if i am doing it right. Here is the code snippet,

usersService.js

var getUsers = function(queryObject) {
    return new Promise(function(resolve, reject) {
        dbConnection.find(queryObject)
          .then(function(result) {
              if (result.length > 0) {
                resolve(result)
              } else {
                resolve(errorMessage.invalidUser())
              }).catch(function(err) {
              reject(err)
            });
          })
    };

usersRouter.js

router.get('/users', function (req,res,next) {
     var queryObject = { "userId":req.query.userId };
     userService.getUsers(queryObject)
          .then(function (data) { //some logic })
          .catch(function (err) { //some logic });
});
  1. Can i use resolve conditionally ?
  2. If the answer is No , what is the right approach ?
  3. Also, am i using the promise in a right manner, in the router?

Thanks in advance!

Since dbConnection.find returns a promise, you can return it directly and choose what will be pass when you will resolve it. No need to wrap it inside an other promise.

var getUsers = function (queryObject) {
    return dbConnection.find(queryObject).then(function (result) {
       if (result.length > 0) {
          return result
       } else {
          return errorMessage.invalidUser()
       }
    })
};

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM