2017-03-22 2 views
3

Ich versuche, eine einfache Abfrage auf SQL Server ausführen, aber wenn ich es mit Winkelmesser läuft es einfach läuft schnell und nicht zurück (log) nichts. Ich würde alle Hinweise, Arbeitsbeispiele oder Hinweise zu dem, was ich falsch mache, und wie man eine SQL-Abfrage auf SQL Server mit Winkelmesser ausführen.Winkelmesser Abfrage SQL Server-Datenbank (MSSQL)

var sql = require('mssql'); 

describe('test db connection', function() { 

    it('tests db connection', function() { 

    ConnectDB() 

    }) 

    function ConnectDB() { 

    var config = { 
     user: 'user', 
     password: 'password', 
     server: 'xyz.database.windows.net', 
     database: 'dbdev', 

     options: { 
     encrypt: true 
     } 
    } 

    var connection = new sql.Connection(config) 
    connection.connect(function (err) { 
     console.log(err) 
    }) 

    var request = new sql.Request(connection); 
    request.query('select * from Config where [Key] like \'HidePreop%\'', function (err, recordeset) { 
     var res = recordeset; 
     console.log(res) 
    }); 

Antwort

3

Protractor Test - it Blöcke werden nur warten webDriverJS Befehle in Protractor Steuerfluss zu beenden und andere Asynchron-Aktivität müssen Sie manuell macht die it Blockwarte done verwenden.

In dieser Fall -

describe('test db connection', function() {  
    it('tests db connection', function (done) { 
     // Any method that returns a promise. Similary if your method returns a callback you can handle accordingly 
     ConnectDB().then(function _onSuccess(){ 
      done(); 
     }).catch(function _onFailure(err){ 
      done.fail(err); 
     }) 
    }) 
}); 

Und ich würde Ihre funcion ändern - ConnectDB() ein Versprechen auf der Auflösung des von den mssql npm package bietet Rückrufs basierend zurückzukehren. Refer here zum Umwandeln eines Rückrufs in Promises. es ist ein tolles Tutorial.

function ConnectDB() { 
    return new Promise(function (fulfill, reject) { 
     var config = { 
      user: 'user', 
      ............. 
     }; 
     var connection = new sql.Connection(config); 
     connection.connect(function (err) { 
      reject(err); 
     }); 

     var request = new sql.Request(connection); 
     request.query('select * from Config where [Key] like \'HidePreop%\'', function (err, recordeset) { 
      if (err) reject(err); 
      else fulfill(recordeset); 
     }); 
    }); 
} 
+0

dank @AdityaReddy ich werde, dass der Check out – rafalf

1

ich auf die MSSQL-Datenbank diese Konfiguration in einer eigenen Datei und dann in der Testdatei importieren, damit ich es ein bisschen wie eine gefälschte Seite Objekt verwenden können. Ich würde empfehlen, alle Datenbankinformationen in einer externen Datei außerhalb des Repository zu speichern. Ich verwende eine .env Datei aus der npm Bibliothek dotenv die npm install --save-dev dotenv

//db.js 
const sql = require('mssql'); 

require('dotenv').config(); 

var config = { 
    user: process.env.MSSQL_USERNAME, 
    password: process.env.MSSQL_PASSWORD, 
    server: process.env.MSSQL_SERVER, 
    database: 'YOURDB', 
    options: { 
    encrypt: true 
    } 
}; 

module.exports = { 

/** Define sql queries here */ 
    deleteEmployeeByLastName(lastName) { 
    let my_query = `DELETE FROM dbo.Employee WHERE LastName='${lastName}'`; 
    sql.connect(config).then(function() { 
     new sql.Request() 
     .query(my_query).then(function (recordset) {}).catch(function (err) { 
      console.log(err); 
     }); 
    }); 
    } 
} 

Die Testdatei installiert werden kann, verwenden, sollte so etwas wie diese

//test.js 
var db = require('db.js'); 

describe('Employee Management', function() {  

    it('Deleting an employee', function (done) { 
     db.deleteEmployeeByLastName('Pmurt'); 
     //REST OF CODE HERE 
     //... 
     //... 
     done(); 
    }) 
}); 
0

Posting ein funktionierendes Beispiel für [email protected] suchen. 4

var sql = require('mssql'); 

describe('test db connection', function() { 
it('tests db connection', function (done) { 
    ConnectDB().then(function _onSuccess(_returned){ 
     console.log(_returned.recordset[0].FirstPSPOrderId) 

     done(); 
    }).catch(function _onFailure(err){ 
     done.fail(err); 
    }) 
}) 

});

function ConnectDB() { 
    return new Promise(function (fulfill, reject) { 
    var config = { 
     user: 'xxx', 
     password: 'xxx', 
     server: 'xxx', 
     port: 'xxx', 
     database: 'xxxxxx', 

     options: { 
      encrypt: true 
     } 
}; 
    var connection = new sql.ConnectionPool(config); 
    connection.connect((err) => { 
     if (err) reject(err); 

    //}); 

    let query = "select [FirstPSPOrderId] from XYZ" 
    connection.request() 
    .query(query, (err, recordeset) => { 

     console.dir('Record set: ' + recordeset) 
     console.dir('Err: ' + err) 

     if (err) reject(err); 
     else fulfill(recordeset); 
    }); 
}); 

}); 

}