Узел unhandel обещает и импортирует - PullRequest
0 голосов
/ 24 февраля 2019

Мой код имеет имя объекта SQLFeeter, которое должно выполнять взаимодействие sql, которое получает данные, отправляет их и передает их. У меня есть проблема, которая связана с импортом.Babel не работает второй, пока я пытаюсь получить данные и передать их

const express = require('express');
const router = express.Router();
const mysql = require('mysql')

/*
--------------------------------------
This will handel all get requests
--------------------------------------
*/
/* 
//sqlInteractuin test
const SqlDataGetter = require('../../sqlInteraction/GetData');
//import  SqlDataGetter  from "./sqlInteraction/GetData";
let SqlGetter = new SqlDataGetter
*/

class SqlDataGetter {
  constructor()
  {
    this.con = mysql.createConnection({
      host: "localhost",
      user: "XXX",
      password: "XXX",
      database: "APP"
    });
  }

  GetClients()
  {    
    let con = mysql.createConnection({
      host: "localhost",
      user: "XXX",
      password: "AAA",
      database: "APP"
    });
      let resultFromSql = null;   
      con.connect(function(err) {
          if (err) throw err;
          let sql_query = "SELECT * FROM contacts"
          con.query(sql_query , function (err, result, fields) {
              if (err) throw err;
              //console.log(fields);
              console.log(result);
              resultFromSql =  result;
          });
          return resultFromSql;
      });
  }
  Tester()
  {
      //return this.con
      //console.log(this.con)
      return 'hello world'
  }

}



router.get('/' , async (req , res) =>
{
    //Need to make an obj that take the data and do all the querys
    res.status(200).send("DataBack");
});

router.get('/Clients' , async (req , res) =>
{
  let sql_getter = new SqlDataGetter();
  const Clients = sql_getter.GetClients();
  console.log(Clients);
  SqlDataGetter.GetClients()
  res.status(200);
  res.send({ respond : Clients});
});

Пока я пытаюсь запустить это сначала, он работает автономно, но когда я создаю запрос ajax, он говорит GetClientsэто не функция.И когда я пытаюсь сделать соединение свойством этого объекта, как this.con, при активации запроса свойства unifend this.con.query undifend.

1 Ответ

0 голосов
/ 29 марта 2019

Если вы используете promise-mysql вместо mysql, вы получите обещания от вызовов методов, что облегчит работу с:

const mysql = require('promise-mysql');

Тогда ваш класс будет выглядеть так:

class SqlDataGetter {
  constructor() {
    this.conPromise = mysql.createConnection({
      host: "localhost",
      user: "XXX",
      password: "XXX",
      database: "APP"
    });
  }
  async GetClients() {
    const con = await this.conPromise;
    const result = await con.query("SELECT * FROM contacts");
    console.log(result);
    return result;
  }
}

Наконец, вы будете использовать этот класс следующим образом:

router.get('/Clients' , async (req , res) => {
  let sql_getter = new SqlDataGetter();
  const clients = await sql_getter.GetClients();
  console.log(clients);
  res.status(200);
  res.send({ respond : clients});
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...