我创建了一个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...');
});
如果用户创建或已经存在,我希望看到什么消息。 任何人都可以解释为什么会这样吗?
答案 0 :(得分:1)
仅从阅读您的代码开始,这就是我怀疑的情况:您正在启动express并监听端口1433。它确实成功调用了您的监听回调并打印了适当的console.log
语句,因此我们知道到达那远。
然后,您尝试连接到数据库。您的数据库端口也是1433,我们知道这是不正确的(数据库端口不能与您的express端口相同,如果是,则express永远不会启动)。因此,您与数据库的连接失败。
数据库连接回调检查错误,然后返回。这意味着您将永远不会看到“已连接” console.log
语句,也永远不会为/buyerSignup
创建路由。基本上,您的应用正在运行,但是没有有用的路由。
(我不确定您甚至期望在URL /test
上看到什么-此代码段中没有任何内容显示您正在创建该路线。但是,无论如何,您都需要解决以上问题)