Home > Software design >  return value from a function node js ssh2
return value from a function node js ssh2

Time:03-06

how to return the values (data) of the getData function bellow?

const { Client } = require('ssh2');

const conn = new Client();

function getData() {
    //i tried to assign the data to a variable but failed
    //var rawData = '';

    conn.on('ready', () => {
        conn.exec('pwd', (err,stream)=>{
            if (err) throw err;
            stream.on('data',(data)=>{
                //the console successfully displayed - the current path
                console.log('Output:'   data);
                //if i return the data here the output was undefined
                //return data
            });
            stream.stderr.on('data',(data)=>{
               
            });
            stream.on('close',(code,signal)=>{
                conn.end();
            });
            //if i tried to get the data values here, it threw "unhandled 'error' event", so i would not possible to return the data here.
            //console.log(data);
            
        });
    }).connect({
        host: 'myserver',
        port: 22,
        username: 'root',
        password: 'roots!'
    });
}


getData();

consoling out from inside stream is success, but how to return the data? i tried to assign the data to variable (rawaData), but confusing where to put the 'return' code.

CodePudding user response:

You can use a promise to communicate back the final result:

function getData() {
    return new Promise((resolve, reject) => {
        let allData = "";
        conn.on('ready', () => {
            conn.exec('pwd', (err, stream) => {
                if (err) {
                    reject(err);
                    conn.end();
                    return;
                }
                stream.on('data', (data) => {
                    allData  = data;
                });
                stream.on('close', (code, signal) => {
                    resolve(allData);
                    conn.end();
                });
                stream.on('error', reject);
            });
        }).connect({
            host: 'myserver',
            port: 22,
            username: 'root',
            password: 'roots!'
        });
    });
}


getData().then(result => {
    console.log(result);
}).catch(err => {
    console.log(err);
});;
  • Related