在本地主机上运行Node.Js

时间:2019-01-03 12:52:43

标签: node.js sql-server google-chrome express

我创建了一个node.js代码来侦听sql server并访问它的数据库,并尝试使用“ http://localhost:1433/test”在浏览器上运行该代码,但是它总是给男人提供enter image description here

这是我的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...');
 });

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

1 个答案:

答案 0 :(得分:1)

仅从阅读您的代码开始,这就是我怀疑的情况:您正在启动express并监听端口1433。它确实成功调用了您的监听回调并打印了适当的console.log语句,因此我们知道到达那远。

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

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

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