繁体   English   中英

请求错误:没有为该请求指定连接; 使用 express.js 连接到 Sql 服务器时?

[英]Request Error: No connection is specified for that request; while connecting to Sql server using express.js?

我正在使用最新版本的 node、express 和 mssql 模块。 我正在尝试使用 express.js 连接到 sql server 2014 的本地实例。

我正在使用官方文档中的 mssql 模块和回调机制。

我试过了:

const express= require('express');
const app= express();
const mssql= require('mssql');

app.get('/', (req, res) => 
{
  const configuration=
  {
    name: "default",
    host: 'localhost',
    database: 'HimHer',
    user: '',
    password: '',
    port: 1433
  }

        new mssql.connect(configuration, error => 
        {
            new mssql.Request().query('Select * from Users', (err, dataset) => 
            {   
                  if(err)
                  {
                      console.log(err);
                      res.send(err);  
                      return;
                  }
                  else
                  {
                      console.dir(dataset);  
                      res.send(JSON.stringify(dataset));  
                      return;           
                  }


         });
    });

    mssql.close();


    mssql.on('error', err => 
    {
        console.log(err);  
    });
});



app.listen(5000, () => 
{
    console.log('Listening to requests on port 5000');
})

我希望它连接到数据库。

我认为,您在创建之前关闭了连接。 将关闭连接命令移到 res.send(...) 行旁边。 然后尝试连接,等待连接,然后运行选择,等待结果,收到结果后将答案发送给客户端,并关闭连接。

看这个例子:

let x = setTimeout(function(){
    console.log('async function called');
}, 1000);
clearTimeout(x);

看看这个:

let x = setTimeout(function(){
    console.log('async function called');
    clearTimeout(x);
}, 1000);

第二个代码会记录,但第一个不会。

sql.Request.query() 需要特定的数据库名称。

您需要在 Request.query() 调用中指定要在其中查询的数据库。

添加use HimHer; 在选择语句之前。

  new mssql.connect(configuration, error => 
    {
        new mssql.Request().query('use HimHer; Select * from Users', (err, dataset) => 
        {   
              if(err)
              {
                  console.log(err);
                  res.send(err);  
                  return;
              }
              else
              {
                  console.dir(dataset);  
                  res.send(JSON.stringify(dataset));  
                  return;           
              }


     });
});

作为一个新的 javascript 开发者,我已经可以告诉你你应该写

const app = express.Router();

代替

const app = express(); 

当你想使用 get、post、delete 等方法时。 你必须告诉你的应用程序根据情况遵循哪种方式。 我已经尝试过不使用 express.Router() 并且我的应用程序每次都崩溃。 但我不知道它是否能解决你的问题,如果我说了什么不好/错的话,我道歉,我还在学习英语 ^^。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM