无法理解ES6中的承诺链中的错误

时间:2018-04-09 13:01:32

标签: javascript node.js ecmascript-6 es6-promise

我的后端代码中有一系列异步操作。我在节点js中进行后端编码。

我的代码是这样的

   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);

所有的东西都运行正常,但在最后一个阻止我尝试在arenas对象中添加output的地方。

                    .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;
                        });

实际上发生了什么我能从数据库中获取竞技场数据 但是在获取之后它没有在输出对象中分配竞技场。

我正在学习承诺链,所以任何人都可以帮助我或给我一些提示

0 个答案:

没有答案