1

我创建了一个 node.js 代码,它监听 sql server 并访问它的数据库,我尝试使用“ http://localhost:1433/test ”在浏览器上运行代码,但它总是给男人这个在此处输入图像描述

这是我的 node.js 代码:

const uid = require('uuid');
const express = require('express');
const bodyParser = require('body-parser');
const sql = require('mssql');
const driver = require('msnodesqlv8');

const config = {
// multipleStatements: true, TO EXECUTE MORE THAN ONE QUERY IN ONE STATEMENT
//driver: 'msnodesqlv8',
server: 'MOSTAFA',
user: 'admin',
password: 'mostafabaron123@',
database: 'WholeSale',
options:{
 trustedConnection: true,
 useUTC: true,
}
};
const userExistCode = 200;
const buyerCreatedCode = 400;
const buyerNotCreatedCode = 401;
const sellerCreatedCode = 500;
const sellerNotCreatedCode = 501;
const connectionErrCode = 100;

var app = express();
app.use(bodyParser.json()); // accept JSON parms
app.use(bodyParser.urlencoded({extended:true}));


// bueyer signup part
app.post('/buyerSignUp', function(req, res) {
var postData = req.body; // get post params
var userId = uid.v4();

sql.connect(config, (err)=>{
 if(err){
   console.log('not connected');
   return;
 }

var request = new sql.Request();

request.input('email', sql.VarChar(45), postData.email)
.input('password', sql.VarChar(45), postData.password)
.input('category', sql.VarChar(45), postData.category)
.query('select * from Buyer where email = @email and category = @category 
and password = @password'
, (err, recordSet)=>{
  if(recordSet.length == 1){
  res.status(userExistCode).send("Buyer already exists.");
 }else{
    new sql.Request()
    .input('buyerId', sql.VarChar(45), userId)
    .input('firstName', sql.VarChar(45), postData.firstName)
    .input('lastName', sql.VarChar(45), postData.lastName)
    .input('email', sql.VarChar(45), postData.email)
    .input('password', sql.VarChar(45), postData.password)
    .input('phoneNumber', sql.VarChar(45), postData.phoneNumber)
    .input('category', sql.VarChar(45), postData.category)
    .query('insert into Buyer(buyer_id, first_name, last_name, email, 
    password, phone_number, category) values(@buyerId, @firstName, 
    @lastName, @email, @password, @phoneNumber, @category)'
    , (err, recordSet)=>{
    if(err){
      console.log(err);
      return;
    }
        if(recordSet.length == 1){
          res.status(buyerCreatedCode).send("Account Created as Buyer.");
        }else{
          res.status(buyerNotCreatedCode).send("Account not Created as 
 Buyer.");
        }
 });
 }
 });
 });
 });
 app.listen(1433, ()=>{
 console.log('server is running on 1433...');
 });

如果用户创建或已经存在,我希望看到的消息。任何人都可以解释为什么会这样?

4

1 回答 1

2

仅仅通过阅读您的代码,我怀疑正在发生的事情是:您正在启动 express 并监听端口 1433。它确实成功地调用了您的监听回调并打印了适当的console.log语句,所以我们知道它已经走到了那一步。

然后,您尝试连接到您的数据库。您的数据库端口也是 1433,我们知道这是不正确的(数据库端口不能与您的 express 端口相同,如果是,则 express 永远不会启动)。因此,您与数据库的连接失败。

数据库连接回调检查错误,然后返回。这意味着您永远不会看到“已连接”console.log语句,也永远不会真正为/buyerSignup. 基本上,您的应用程序正在运行,但没有有用的路线。

(我不确定您甚至希望在 URL 上看到/test什么 - 此代码片段中没有任何内容显示您创建了该路由。但是,无论如何您都需要解决上述问题。)

于 2019-01-03T16:00:00.673 回答