【问题标题】:How to solve TypeError: config.query is not a function如何解决 TypeError: config.query is not a function
【发布时间】:2021-07-26 13:05:55
【问题描述】:

我对 Node.js 和 Mssql 还是很陌生。在索引文件中查找我在 config.query 中遇到错误。我试图用mysql代码编写类似的代码。登录页面工作正常,但是当我尝试注册时,我收到错误 config.query is not a function。将 pug 用于 html 页面。 这是 App.js 文件

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var config = require('./database/config');
var session = require('express-session');

var app = express();

app.use(session({
  secret : 'ABCDefg',
  resave : false,
  saveUninitialized : true
}));

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/users', usersRouter);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

//Create Server
app.listen(3000,()=> {
  console.log('Listening on port 3000...');
});
module.exports = app;

这是 index.js 文件

var express = require('express');
var router = express.Router();
var mssql = require('mssql');
var bcrypt = require('bcrypt');
var config = require('../database/config');

/* GET home page. */
router.get('/', function(req, res, next) {
  if(req.session.flag ==1 ){
    req.session.destroy();
    res.render('index', { title: 'CodeLanguage',message: 'Email Already Exist', flag : 1 });
   
  }else if (req.session.flag ==2 ){
    req.session.destroy();
    res.render('index', { title: 'CodeLanguage',message: 'Registration Done. Please Login', flag : 0 });
  }
  else if (req.session.flag ==3 ){
    req.session.destroy();
    res.render('index', { title: 'CodeLanguage',message: 'Confirm Password Does Not Match.', flag : 1 });
  }else if (req.session.flag ==4 ){
    req.session.destroy();
    res.render('index', { title: 'CodeLanguage',message: 'Incorrect Email or Password', flag : 1  });
  }else{
    res.render('index', { title: 'CodeLanguage' });
  }
      
    });
//handle POST request for User Regisitratşon
router.post('/auth_reg',function(req,res,next){
  var fullname = req.body.fullname;
  var email = req.body.email;
  var password = req.body.password;
  var cpassword = req.body.cpassword;

  if(cpassword == password){
    var sql = 'select*from user where email = ?;' ;

    config.query(sql,[email],function(err,result,fields){
      if(err) throw err;

      if(result.length > 0){
        req.session.flag= 1;
        res.redirect('/');
      }
      else {

        var hashpassword = bcrypt.hashSync(password,10);
        var sql = 'insert into user(fullname,email,password) values(?,?,?)';
        config.query(sql,[fullname,email, hashpassword], function(err,result,fields){
          if(err) throw err;
          req.session.flag = 2;
          res.redirect('/');
        });
      }
    });
  }else{
    req.session.flag =3 ;
    res.redirect('/');
  }
});


//Handle POST request for User Login
router.post('/auth_login', function(req,res,next){
  var email = req.body.email;
  var password = req.body.password;
  var sql = 'select*from user where email = ?;';

  config.query(sql,[email], function(err,result,fields){
    if (err) throw err;

    if(result.length && bcrypt.compareSync(password,result[0].password)){  
      req.session.email = email;
      res.redirect('/home');
    }else{
      req.session.flag=4;
      res.redirect('/');
    }
  });
});

//Route for home page
router.get('/home',function(req,res,next){
  res.render('/home', {message: 'Welcome, '+ req.session.email});
});

router.get('/logout', function(req,res,next){
  if(req.session.email){
    req.session.destroy();
  }  
  res.redirect('/');
});
module.exports = router;

这是 config.js 文件

var mssql = require ('mssql');
var express = require('express');
var Connection = require('tedious').Connection;  


var config = {
    user: 'sa',
    password: '1',
    server: 'LAPTOP-US1RSKFM\SQLEXPRESS',  
    database: 'login_sys'
};
var connection = new Connection(config);  
connection.on('connect', function(err) {  
      // If no error, then good to proceed.
    console.log("Connected");  
});
  
connection.connect();

module.exports = config;

【问题讨论】:

    标签: node.js sql-server express authentication registration


    【解决方案1】:

    config.query 不是函数,因为 config.query 未定义。在 config.js 中定义和导出 config 对象时,您没有包含 query 属性

    var config = {
        user: 'sa',
        password: '1',
        server: 'LAPTOP-US1RSKFM\SQLEXPRESS',  
        database: 'login_sys',
        // query: () => ...
    };
    

    【讨论】:

      猜你喜欢
      • 2021-06-22
      • 2018-09-01
      • 2018-11-14
      • 2021-07-02
      • 2021-08-12
      • 1970-01-01
      • 2014-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多