Как подключить sql сервер к файлу app.js? - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть папка с именем NEsql, расположенная в папке с именем sqlnames1. Внутри папки NEsql у меня есть следующие файлы.

sqlcreatedb.js

var mysql = require('mysql');

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

con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
  /*Create a database named "mydb":*/
  con.query("CREATE DATABASE names", function (err, result) {
    if (err) throw err;
    console.log("Database created");
  });
});

sqlcreatetable.js

var mysql = require('mysql');

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

con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
  /*Create a table named "customers":*/
  var sql = "CREATE TABLE people (id INT AUTO_INCREMENT PRIMARY KEY, firstName VARCHAR(255), lastName VARCHAR(255))";
  con.query(sql, function (err, result) {
    if (err) throw err;
    console.log("Table created");
  });
});

sqlinsertvalues.js

var mysql = require('mysql');

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

con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
  var sql = "INSERT INTO people (firstName, lastName) VALUES ?";
  var peoplenames = [
    ['Vedant', 'Apte'],
    ['Vedant', 'Savalajkar'],
    ['Vinay', 'Apte'],
    ['Varda', 'Apte'],
    ['Mihir', 'Wadekar'],
    ['Mihir', 'Kulkarni'],
    ['Eesha', 'Hazarika'],
    ['Eesha', 'Gupte'],
    ['Raunak', 'Sahu'],
    ['Hritvik', 'Agarwal'],
    ['Mahima', 'Kale'],
    ['Shivani', 'Sheth'],
    ['Arya', 'Chheda'],
    ['Diya', 'Shenoy']
  ];
  con.query(sql, [peoplenames], function (err, result) {
    if (err) throw err;
    console.log("Number of records inserted: " + result.affectedRows);
  });
});

Все эти файлы работают, так как я могу выполнить все задачи и успешно получить все соответствующие операторы console.log. Однако я не уверен, как мне подключить эти файлы к файлу app.js, расположенному в папке sqlnames1. Кто-нибудь знает, как это сделать?

Вот мой файл 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 app = express();

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

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;

1 Ответ

0 голосов
/ 14 сентября 2018

То, что вы пытаетесь сделать, может быть просто содержимым файла app.js, для которого вам может потребоваться ваш пакет и запускать эти функции. Однако, если вы выберете этот маршрут, вы можете сохранить их в переменной, а затем использовать module.export, например,

  variable_name = [desired content to export]

  module.export = variable_name

Если вы хотите создать базу данных из отдельных файлов, а не из файла app.js, вам следует взглянуть на сиквелизацию пакета. Это больше похоже на то, что вы пытаетесь сделать.

https://www.npmjs.com/package/sequelize

Ответ на ваш комментарий, если вы пытаетесь создать базу данных при запуске app.js. Вам снова лучше взглянуть на ORM, который сделает это лучше, чем пакет mysql. С его помощью вы можете импортировать БД в ваш app.js и просто использовать

    require('path to db')

затем, используя БД, как вы считаете нужным, но снова построить БД таким способом будет трудно, так как вам придется запустить

    node filename.js

для каждого из них, так что, если нет, то я бы настоятельно рекомендовал взглянуть на другой ORM, который сделает эту работу для вас намного быстрее и проще. Как только вы запустите свой app.js, он соберется и запустится, пакет mysql - не лучший инструмент для того, что вы пытаетесь сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...