javascript - 需要在 Nodejs mssql 验证的变量中保留 promise 结果

标签 javascript node.js promise node-mssql

    let RetrieveFromDb=(queryStr) =>
{
    let sql=require('mssql');
    let config={
        server:'127.0.0.1',
        database:'TestDB',
        user:'user',
        password:'user',
    };
    let dbConn=new sql.Connection(config);
    return dbConn.connect().then(function (){
        let request=new sql.Request(dbConn);
        return request.query(queryStr)
        .then(function(recordset)
        {
            return recordset;
            dbConn.close();

        }).catch(function (err) {
            console.log(err);
            dbConn.close();
        });
    }).catch(function (err)  {
        console.log(err);
    });
};


RetrieveFromDb("Select FirstName from User where UserID='1'").then(function(x){console.log(x[0].FirstName);});//console is displying the FirstName value from DB
RetrieveFromDb("Select FirstName from User where UserID='1'").then(res=>{console.log(res[0].FirstName)});//console is displying the FirstName value from DB

以上两个函数调用将值返回到控制台,但我想将 RetrieveFromDb() 的结果保留到变量中,以便我可以与其他数据进行比较以进行验证。

假设 if var actualFirstname=RetrieveFromDb(myquery); 那么我将比较 if(actualFirstname===expectedFirstName) 与否。

最佳答案

Promise 是一种代码同步方法,因此您必须将它们的操作视为异步操作,并使用 Promise 解析时获得的值。没有办法:

var actualFirstName = RetrieveFromDb(myquery);
actualFirstName === expectedFirstName;

相反,您必须在 promise 解决时进行比较:

RetrieveFromDb(myquery).then(data => {
  data.actualFirstName === expectedFirstName;
});

关于javascript - 需要在 Nodejs mssql 验证的变量中保留 promise 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43019053/

相关文章:

javascript - 我怎样才能过33岁!在浏览器中使用Javascript?

javascript - 将内容包装在 div 中的纯 javascript 方法

javascript - 如何从一个函数中的多个模式检索和传递数据

javascript - `repeat` 步骤内的 Gremlin DSL 使用错误

javascript - 如何将数据从 api 推送到数据集中

javascript - React enzyme 类型错误 :Cannot read property 'propTypes' of undefined

node.js - NodeJS : how to implement repository pattern

node.js - 从 Promise 而不是控制台返回值

javascript - Angular 链接 AJAX 调用

javascript - 异步函数返回一个 promise