gpt4 book ai didi

javascript - 使用带有 Node.js 的 REST api 服务器连接到我的 sql 数据库时出现问题

转载 作者:行者123 更新时间:2023-11-29 02:41:27 25 4
gpt4 key购买 nike

一般来说,我对编码服务器和 javascript 还很陌生,但我目前正在尝试设置一个 REST api 服务器并将其连接到我的 sql 数据库,目前我正在本地做所有事情。我在使用 NODE js 时正在运行 ubuntu 18.04。我已经能够成功创建一个 REST api 并通过网页的 url 或 Postman 连接到它。我已经通过我的 cmd 终端创建了一个 sql server 数据库,并在上面创建了测试数据。我一直在查看将 REST api 连接到数据库的指南,但我认为我提供给 api 连接的信息是我的问题所在。我从下面这个作为我的 server.js 开始,我在其中有一个文件夹 Controller 和一个 ProductController.js 文件,我在其中处理路由/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 数据库中的表称为“数据”,因此是“SELECT * FROM 数据”部分。当我尝试在 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_native_password。我认为服务器:部分是错误的,我已经尝试将其注释掉但仍然没有连接。我没有 SQL Server Management Studio,也没有找到通过终端获取我的 sql server 名称的方法。我已经看到了一些示例,这些示例似乎涵盖了您需要为 api 提供连接所需的信息。如果有人对此也有洞察力,那也将不胜感激。我的最终目标是最终为数据库创建 GET 和 POST 路由,以及一个操作 POST 数据的函数,但现在我只是想把事情连接起来,这样我就可以玩弄被 GET 处理的数据。感谢您提供的任何见解,非常感谢。

var sql = require("mssql");
var connect = function()
{
var conn = new sql.ConnectionPool({
host: 'localhost'
user: 'root',
password: '********',
server: 'mysql',
database: 'test'
});

return conn;
};

最佳答案

看起来您的 connect.js 文件中可能有一些错误:

var conn = new sql.ConnectionPool({
host: 'localhost'
user: 'root',
password: '********',
server: 'mysql',
database: 'test'
});

格式应为:

const pool = new sql.ConnectionPool({
user: '...',
password: '...',
server: 'localhost',
database: '...'
})

请注意,您目前同时拥有 hostserver,看起来只需要 server。此外,如果连接到 MSSQL 数据库,server: 'mysql' 没有意义。

来源:node-mssql documentation

关于javascript - 使用带有 Node.js 的 REST api 服务器连接到我的 sql 数据库时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51091242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com