0

I have a series of asynchronous operations in my Backend code . I have doing backend coding in node js .

My code is something like this

   db.users
        .findAll({
          where: condition,
          duplicating: false,
          attributes: userAttributes,
          include: inclusion,
          group: ['users.id', 'organizationEntries.id'],
          order: [['organizationEntries', 'createdAt', 'DESC']]

        })
        .then(users => {
          let result = users.map(c => {
            let output = {
              user_id: c.id,
              name: c.name,
              mobile: c.mobile,
              mobile_alternate: c.mobileAlternate,
              email: c.email,
              gender: c.gender,
              dob: c.dob,
              image: Utils.getImageUrl(c.image),
              entry_id: c.organizationEntries[0].id,
              doj: c.organizationEntries[0].fromDate,
              status: c.organizationEntries[0].status
            };
            if (isPlayer && c.dataValues.amount) {
              output.due_amount = c.dataValues.amount.toFixed(2);
            }
            let arenaPromise;
            if (!isPlayer) {
              output.address_text = addressController.prepareAddressText(c.address);
              output.address = addressController.prepareAddressJson(c.address);
              if (c.organizationEntries[0].arenaIds)
                 db.arenas
                  .findAll({
                    attributes: ['name'],
                    where: {
                      id: {
                        [Op.in]: c.organizationEntries[0].arenaIds
                      },
                      organizationId: req.ORG_ID
                    }
                  })
                  .then(arenas => {
                    console.log(arenas);
                    output.arenas = arenas.map(a => {
                      let arena = {};

                      arenas.forEach(element => {
                        arena.name = element.name;
                        // console.log(arena.name);
                      });
                      console.log(arena);
                      return arena;
                    });

                    console.log(output);
                    // res.send(output);
                  });
            }

              return output;

          });
 res.send(result);

All the things are working fine but in the last then block where I am trying to add arenas in the output object .

                    .then(arenas => {
                        console.log(arenas);
                        output.arenas = arenas[0].name;
                        output.arenas = arenas.map(a => {
                          let arena = {};

                          arenas.forEach(element => {
                            arena.name = element.name;
                            // console.log(arena.name);
                          });
                          console.log(arena);
                          return arena;
                        });

Actually what is happening I am able to fetch arenas data from database but after fetching it is not assigning the arenas in output object .

I am learning promise chain so anyone can please help me or give me some hint

Vikas
  • 975
  • 1
  • 10
  • 34
  • 1
    You need to `return` your promise if you want the next callback in the promise chain to wait for your asynchronous action – Bergi Apr 09 '18 at 15:19
  • Possible duplicate of [How do I return the response from an asynchronous call?](https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – coagmano Apr 10 '18 at 01:27

0 Answers0