0

I am trying to write a code to connect with snowflake inside the azure function app using nodejs stack. Here is the code I have writtern.

async function af2snf() 
{
console.log("starting connection");
var snowflake = require('snowflake-sdk');
// Create a Connection object that we can use later to connect.
console.log("prep conn");
var connection = snowflake.createConnection( {
    account: "myaccountname",
    username: "myusername",
    password: "mypass",
    database: "dbname",
    schema: "schemaname"
    }
    );
console.log("making connection");

var conn_id = connection.connect( 
        function(err, conn) {
            if (err) {
                console.error('Unable to connect: ' + err.message);
                } 
            else {
                console.log('Successfully connected to Snowflake.');
                // Optional: store the connection ID.
                connection_ID = conn.getId();
                }
            }
        )
return conn_id.getId();
}

console.log("outside fucntion");
console.log(af2snf());
console.log("executed fucntion");

The output I am getting is :

outside fucntion
starting connection
prep conn
making conn
Promise { <pending> }
executed fucntion
Successfully connected to Snowflake.

But What I need is :

outside fucntion
starting connection
prep conn
making conn
Successfully connected to Snowflake.
Promise { <pending> }
executed fucntion

I am very new to nodejs. Please help me out on this

Vipendra Singh
  • 327
  • 1
  • 4
  • 13

1 Answers1

1

af2nsf needs to return a promise :

async function af2snf() {
  return new Promise((resolve,reject)=>{
   console.log("starting connection");
   var snowflake = require('snowflake-sdk');

   // Create a Connection object that we can use later to connect.
   console.log("prep conn");
   var connection = snowflake.createConnection( {
    account: "myaccountname",
    username: "myusername",
    password: "mypass",
    database: "dbname",
    schema: "schemaname"
    });
   console.log("making connection");

   connection.connect( async function(err, conn) {
            if (err) {
                console.error('Unable to connect: ' + err.message);
                return reject(err);
            } 
            else {
                console.log('Successfully connected to Snowflake.');
                // Optional: store the connection ID.
                var conn_id = await conn.getId();
                return resolve(conn_id);
             }
      })
  });
}

console.log("outside fucntion");
af2snf().then(conn_id=>{
   console.log(conn_id);
   console.log("executed fucntion");
}).catch(err=>{
   console.error(err);
});
mangesh
  • 419
  • 4
  • 16