Разверните API SQL Server с помощью Express.js в Heroku - PullRequest
0 голосов
/ 05 декабря 2018

Я очень новичок в Express.js, но сейчас я создал API базы данных SQL Server.Он отлично работает на локальном хосте, но теперь я развернут на Heroku.В то время как мое приглашение CMD открыто, мой API работает нормально, но когда он закрывается, я получаю Внутреннюю ошибку сервера.

Ранее я создал тест с использованием Mongo в качестве DB, mongoose и развернул его в Heroku иAPI все еще работает, даже если приглашение не открыто.Кто-то знает, нужно ли мне создавать другой документ .js, как в mongoose, или продолжать работать с моим API?

Это мой код в документе .js (server.js):

const express = require('express');
const bodyParser = require('body-parser');
const sql = require('mssql');
const app = express();

app.use(bodyParser.json());

app.use(function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, contentType,Content-Type, Accept, Authorization");
    next();
});


const dbConfig = {
    user: "daUser",
    password: "daPass",
    server: "daServer",
    database: "DaDB"
}

const executeQuery = function (res, query) {
    sql.connect(dbConfig, function (err) {
        if (err) {
            console.log(err);
            res.send(err);
        }
        else {
            // create Request object
            var request = new sql.Request();
            // query to the database
            request.query(query, function (err, result) {
                if (err) {
                    console.log(err);
                    res.send(err);
                }
                else {
                    res.send(result);
                }
            });
        }
    });
}

app.get("/api/HolidayBaseApi", function (req, res) {
    var query = "SELECT * FROM [HolidaysBase]";
    executeQuery(res, query);
})

const PORT = process.env.PORT || 8080

app.listen(PORT, () => {
    console.log("App now running on port", PORT);
});

Мой package.json следующий:

    {
  "name": "holidaysbaseapi",
  "version": "1.0.0",
  "description": "Api of Holidays",
  "main": "server.js",
  "scripts": {
    "start": "node server.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Chuck Villavicencio",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.18.3",
    "express": "^4.16.4",
    "mssql": "^4.3.0"
  },
  "engines": {
    "node": "8.11.3",
    "npm": "5.6.0"
  }
}

На Heroku я установил Heroku CLI;вошел в систему, клонировал репозиторий и развернул мои изменения.

Я использую Express.js, Node, SQL Server и Heroku

1 Ответ

0 голосов
/ 05 декабря 2018

Проблема в том, что ваша база данных SQL-сервера создана на вашей локальной машине, а heroku не может подключиться к ней.Вы можете использовать postgresDB, предоставленный heroku, или создать базу данных sql server в любом провайдере через Интернет и заменить dbConfig на конфигурации этого db

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