代码之家  ›  专栏  ›  技术社区  ›  Mohammad

Nodejs Expess脚本无法创建Mysql数据库表

  •  0
  • Mohammad  · 技术社区  · 5 年前

    我用expressgenerator创建了node js express应用程序。我试图通过执行名为数据库.js. 此脚本位于数据库文件夹中。我可以运行服务器,但当我尝试使用 &燃气轮机;

    这是我的应用程序.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 expressHbs = require('express-handlebars');
    var mysql = require('./database/db');
    var app = express();
    
    require('./database/db');
    // view engine setup
    app.engine('.hbs',expressHbs({defaultLayout: 'layout' , extname: '.hbs'}));
    app.set('view engine', '.hbs');
    
    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');
    });
    
    module.exports = app;
    

    这是你的名字数据库.js代码。

    var mysql = require('mysql');
    //var app = express();
    
    var con = mysql.createConnection({
      host: "localhost",
      user: "root",
      password: "",
      database: "shopdb"
    });
    
    con.connect(function(err) {
      if (err) throw err;
      console.log("Connected!");
      var sql = "CREATE TABLE products (imagepath VARCHAR(255), tittle VARCHAR(255), descriptions VARCHAR(255),price VARCHAR(255))";
      var sql1 = "INSERT INTO products (imagepath, tittle,descriptions,price) VALUES ?";
      var values = [
        ['https://upload.wikimedia.org/wikipedia/en/5/5e/Gothiccover.png', 'Gothic Veido Game','Awesome Game !!!!','25'],
        ['https://upload.wikimedia.org/wikipedia/en/5/5e/Gothiccover.png', 'Gothic Veido Game','Awesome Game old !!!!','100'],
    
        ['https://upload.wikimedia.org/wikipedia/en/5/5e/Gothiccover.png', 'Gothic Veido Game','Awesome Game New !!!!','120'],
        ['https://upload.wikimedia.org/wikipedia/en/5/5e/Gothiccover.png', 'Gothic Veido Game','Awesome Game !!!!','26'],
    
      ];
      con.query(sql, sql1,[values], function (err, result) {
        if (err) throw err;
        console.log("Number of records inserted: " + result.affectedRows);
      });
    
    });
    con.destroy();
    
    0 回复  |  直到 5 年前
        1
  •  1
  •   Sandeep Patel    5 年前

    在运行多个语句时,应在创建连接时启用multistatement true报表.更改您的配置选项如下:

    var con = mysql.createConnection({
      host: "localhost",
      user: "root",
      password: "",
      database: "shopdb",
      multipleStatements: true
    });
    

    https://github.com/mysqljs/mysql#multiple-statement-queries