Search code examples
node.jstypeorm

How to post request in async await in typeorm


I want to post request and get data for example

async saveUser(user: any) {
        var headers = {
            "Content-Type": "application/json"
        }
        var request = require('request');
        var res;
        var req = await request.post({ url: "http://localhost:3000/user/",json:true, body: user, headers: headers },await function(error,response,body){
            res=body;
            console.log("output from localhost 3000",res);
        });
        return  res;
    }

but i am using this in following function of userController

 async saveUser(request:Request,response:response,next:NextFunction) {
        console.log("saving user");
        var user = await this.userService.saveUser(request.body);
        console.log(user);
        console.log("user saved");
    }

and i am getting output like this

saving user
undefined
user saved
output from localhost 3000 User{
id:10,
firstName:xyz,
lastName:qwe
}

how to wait until localhost 3000 complete its request and give response back to this localhost port?

or is there any alternative solution to this.


Solution

  • Try below, this works for me just u have to use promise in deep.By using promise it will wait until it gets response from localhost:3000/user..

    async saveUser(user: any) {
        var headers = {
            "Content-Type": "application/json"
        }
        var request = require('request');
        var options = {
            uri: "http://localhost:3000/user",
            body: user,
            headers: headers,
            json: true
        }
        return new Promise(function (resolve, reject) {
            request.post(options, function (err, resp, body) {
                console.log(resp.statusCode);
                if (err) {
                    console.log(err.message);
                    reject(err);
                } else {
                    console.log(body);
                    if(resp.statusCode==200){
                        resolve(body');
                    }
                    else{
                        resolve(body);
                    }
                }
            });
        });
    }