Nestjs:如何使用pormise依次调用2个api?

谁能让我知道如何依次调用2个API? api1成功返回用户名后,请致电api2以通过传递用户名来获取数据。我怎样才能做到这一点?

user.service.ts

  async createUser(body: CreateUserDto): Promise<any> {
    const api1 = await this.keycloakService.createUser(body);
    const api2 = await this.keycloakService.searchByusername(); // I have to pass username once createUser api call success 

    return { 
      api2 
    };

  }

keycloak.service.ts

 async createUser(user: IUserRepresentation) {
    return new Promise(async (resolve,reject) => {
      const url = `${this.baseUrl}/admin/realms/${this.realmName}/users`;
      const auth = await this.getadminAuth();
      const req = {
        url,auth: {
          bearer: auth.access_token,},body: user,method: 'POST',json: true,};
      request(req,(err,res,body) => {
        if (err) {
          return reject(err);
        }
        try {
          if (res.statusCode === 201) {
            return resolve(req.body.username);
          } else {
            throw {
              thrown: true,statusCode: res.statusCode,message: body.errorMessage,};
          }
        } catch (e) {
          reject(e);
        }
      });
    });
  }

async searchByusername(username: string) {
    return new Promise(async (resolve,reject) => {
      const url = `${this.baseUrl}/admin/realms/${this.realmName}/users?username=${username}`;
      const auth = await this.getadminAuth();
      const req = {
        url,method: 'GET',body) => {
        if (err) {
          return reject(err);
        }
        try {
          if (res.statusCode === HttpStatus.OK) {
            return resolve(body);
          } else {
            throw {
              thrown: true,};
          }
        } catch (e) {
          reject(e);
        }
      });
    });
  }
colby63 回答:Nestjs:如何使用pormise依次调用2个api?

您应该在api1变量中有可用的数据。可能类似于api1.data.username,但这是一个假设。尝试查看api1变量中存储了哪些信息,您将能够从中提取数据。

当您传递回req.body.username时,您应该可以直接将api1传递给该函数。

async createUser(body: CreateUserDto): Promise<any> {
    const api1 = await this.keycloakService.createUser(body);
    const api2 = await this.keycloakService.searchByUsername(api1); // I have to pass username once createUser api call success 

    return { 
      api2 
    };

  }

尽管如果您从第一个API的响应中获得用户名,则应该将其更改为res.body.username

本文链接:https://www.f2er.com/2948131.html

大家都在问