一般来说,我对编写服务器和javascript代码非常陌生,但我目前正在尝试设置restapi服务器并将其连接到我的sql数据库,目前我正在本地完成所有工作。我正在运行ubuntu18.04,同时使用node js。我已经能够成功地创建一个restapi并通过网页的url或postman连接到它。我已经通过cmd终端创建了一个sqlserver数据库,并在上面创建了测试数据。我一直在看将restapi连接到数据库的指南,但是我认为我给api提供的信息是我的问题所在。我从下面的server.js开始,在这里我有一个文件夹控制器和一个productcontroller.js文件,我在这里处理route/api/products。
var http = require('http');
var express = require('express');
var app = express();
var port = process.env.port || 3000;
var productController = require('./Controller/ProductController')();
app.use("/api/products", productController);
app.listen(port, function(){
var datetime = new Date();
var message = "Server running on Port:- " + port + " Started at :- " +
datetime;
console.log(message);
});
下面是我的productcontroller.js文件。问题可能在这里,但我相信这是我的下一个名为connect.js的文件。我的sql数据库中的表名为“data”,因此是“select*fromdata”部分。当我试图在 Postman 中获取此数据时,它会显示我设置的错误“插入数据时出错”。所以我相信在运行时,我没有从sql获取数据,因此无法访问conn.close()。
var express = require('express');
var router = express.Router();
var sql = require("mssql");
var conn = require("../connection/connect")();
var routes = function()
{
router.route('/')
.get(function(req, res)
{
conn.connect().then(function()
{
var sqlQuery = "SELECT * FROM data";
var req = new sql.Request(conn);
req.query(sqlQuery).then(function (recordset)
{
res.json(recordset.recordset);
conn.close();
})
.catch(function (err) {
conn.close();
res.status(400).send("Error while inserting data");
});
})
.catch(function (err) {
conn.close();
res.status(400).send("Error while inserting data");
});
});
return router;
};
module.exports = routes;
下面是我的connect.js文件。我的root密码不是***,但在我的机器上是正确的。我已经在mysql终端中将root的插件改为mysql\u native\u密码。我认为服务器:部分是错误的,我试着评论出来,但仍然没有连接。我没有sql server management studio,也没有找到通过终端获取sql server名称的方法。我见过一些例子,这些例子似乎涵盖了您需要向api提供什么样的信息来进行连接。如果有人在这方面也有见解,也会很感激。我的最终目标是最终为数据库创建get和post路由,以及一个操作post数据的函数,但目前我只是尝试连接一些东西,这样我就可以处理正在获取的数据了。感谢您提供的任何见解,非常感谢。
var sql = require("mssql");
var connect = function()
{
var conn = new sql.ConnectionPool({
host: 'localhost'
user: 'root',
password: '********',
server: 'mysql',
database: 'test'
});
return conn;
};
2条答案
按热度按时间z2acfund1#
要诊断错误,应在catch块中添加一些日志记录:
并在您的环境中设置node_env,例如在package.json中:
zz2j4svz2#
您的connect.js文件中似乎有一些错误:
格式应为:
请注意,您当前有两个
host
以及server
,看起来只有server
是需要的。也,server: 'mysql'
如果连接到mssql数据库,则没有意义。来源:node mssql文档