代码之家  ›  专栏  ›  技术社区  ›  phil o.O

不使用回调时未定义的结果。Nodejs、Express和SQL Server Express

  •  2
  • phil o.O  · 技术社区  · 9 年前

    以下版本包括mssql、Nodejs、Gulp、Express和SQL Server Express。我能够成功登录到SQL Server Express。但是,返回的值是 未定义 当我使用 bookRoute。没有回调的js代码段 然而,当我使用回调时,我会得到数据。然而,我不明白为什么。

    应用程序。js代码段:

    var config = {
        user: 'user',
        password: 'password',
        server: 'localhost',
        database: 'Books',
        options: {
           instance: 'SQLEXPRESS'
        }
    };
    
    sql.connect(config, function(err){
        console.log(err);
    });
    

    bookRoute。没有回调的js代码段:

    bookRouter.route('/')
    .get(function (req, res) {
        console.log('book router');
        var request = new sql.Request();
        request.query('select * from books').then(
            function (err, recordset) {
                console.log(recordset);
            })
        .catch(function(err){  console.log(err)});
        });
    

    bookRoute。带有回调的js代码段:

    bookRouter.route('/')
    .get(function (req, res) {
        console.log('book router');
        var request = new sql.Request();
        request.query('select * from books',
            function (err, recordset) {
                console.log(recordset);
            });
    });
    

    用户访问网页后,控制台应显示结果。不幸的是,显示的唯一结果是 未定义 不使用回调时。

    控制台输出:

    P:\ub\lic\library>gulp serve
    [11:08:28] Using gulpfile P:\ub\lic\library\gulpfile.js
    [11:08:28] Starting 'style'...
    [11:08:28] Starting 'inject'...
    [11:08:53] Finished 'inject' after 808 ms
    [11:08:53] Finished 'style' after 25 s
    [11:08:53] Starting 'serve'...
    [11:08:53] Finished 'serve' after 5.31 ms
    [11:08:53] [nodemon] 1.9.2
    
    [11:08:53] [nodemon] to restart at any time, enter `rs`
    [11:08:53] [nodemon] watching: *.js src/**/*.js
    [11:08:53] [nodemon] starting `node app.js`
    
    running server on port 3000
    null
    book router
    undefined
    [11:09:21] [nodemon] restarting due to changes...
    Restarting the server.....beep boop beep beep
    [11:09:21] [nodemon] restarting due to changes...
    Restarting the server.....beep boop beep beep
    [11:09:21] [nodemon] starting `node app.js`
    running server on port 3000
    null
    book router
    [ { id: 1,
        title: 'A,B,C with Big Bird           ',
        author: 'Michael Jacob ' },
      { id: 2,
        title: 'Peter and his Petunias        ',
        author: 'Jess Holiday  ' },
      { id: 3,
        title: 'The Amazing Average Guy       ',
        author: 'Don Dillon    ' } ]
    
    1 回复  |  直到 9 年前
        1
  •  2
  •   user6361120 user6361120    9 年前

    bookRoute。没有回调的js代码段:

    bookRouter.route('/').get(function (req, res) {
    console.log('book router');
    var request = new sql.Request();
    request.query('select * from books')
        .then(function (recordset) {
            console.log(recordset);
        })
        .catch(function (err) {
            console.log(err);
        });
    });
    

    使用bookRoute时。没有回调的js代码段 then 函数应该只有一个参数,该参数是查询的结果,在 documentation 。出现错误时 catch 函数。

    推荐文章