Я использую соединитель Mysql, потому что мне нужно получить некоторые данные из моей базы данных, но у меня возникает следующая проблема:
У меня есть два файла server.js
и dbConnection.js
, и у меня естьвозврат в файл dbConnection.js
, который должен возвращать массив и показывать его в файле server.js
.Тем не менее, он печатает неопределенный массив.Я не понимаю, что я делаю неправильно, так как я также пытался распечатать массив перед повторным использованием его в файле dbConnection.js
, и он отображается с данными.
server.js:
const express = require('express');
const dbConnection = require('./dbConnection.js');
app.get('/', function (req, res) {
const val1 = new Promise((resolve, reject) => {
dbConnection
.getData()
.then(data => {
resolve(data)
})
.catch(err => reject('error'))
});
Promise.all([val1])
.then(data => {
console.log(data) //here it prints out [undefined]
});
});
dbConnection.js:
const mysql = require('mysql');
const con = mysql.createConnection({
host: "localhost",
user: "root",
database: "db1"
});
const getData = async ()=> {
var array = new Array();
const sql1 = "SELECT * FROM table1 WHERE active=1";
con.query(sql1, function (err, result, fields) {
if (err) throw err;
array = [];
for(var i=0; i<result.length; i++) {
array.push(result[i].active);
}
console.log(array) //here it prints out the array with its values
return array;
});
}
module.exports.getData = getData;
Редактировать: Может быть, это будет полезно, чтобы выяснить, что происходит.Я только что попробовал это, и он печатает пустой массив []
:
const mysql = require('mysql');
var array = new Array();
const con = mysql.createConnection({
host: "localhost",
user: "root",
database: "db1"
});
const getData = async ()=> {
const sql1 = "SELECT * FROM table1 WHERE active=1";
con.query(sql1, function (err, result, fields) {
if (err) throw err;
//array = [];
for(var i=0; i<result.length; i++) {
array.push(result[i].active);
}
console.log(array) //here it prints out its data
//return array;
});
console.log(array); //here it prints out []
}
module.exports.getData = getData;
Когда я печатаю массив в файле dbConnection.js
:
![](https://i.imgur.com/xOiD6Ws.png)
Когда я распечатываю его в файле server.js
:
Почему это происходит и как это исправить?
Заранее спасибо.