当我试图连接数据库时,是否有任何问题?

is there any issue when i'm trying to connect database?

本文关键字:是否 任何 问题 连接 数据库      更新时间:2023-09-26

以下是我的代码:

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '1',
  database : 'test'
});
connection.connect();
data = connection.query('SELECT * FROM deneme', function(err, rows, fields){
    if(err) throw err;
    veri = rows;
    return veri;
});
console.log(data);

当我像下面这样运行这个文件(index.js)

节点index.js

返回一些错误并且不显示数据。

我的mysql数据如下:

INSERT INTO `deneme` (`id`, `name`) VALUES
(1, 'yusuf'),
(2, 'ali');

有什么问题吗?

错误是:

{ _callback: [Function],
  _ended: false,
  _callSite: '    at Query.Sequence (/home/yusuf/Masaüstü/node/node_modules/mysql/lib/protocol/sequences/Sequence.js:15:21)'n    at new Query (/home/yusuf/Masaüstü/node/node_modules/mysql/lib/protocol/sequences/Query.js:11:12)'n    at Protocol.query (/home/yusuf/Masaüstü/node/node_modules/mysql/lib/protocol/Protocol.js:41:24)'n    at Connection.query (/home/yusuf/Masaüstü/node/node_modules/mysql/lib/Connection.js:90:25)'n    at Object.<anonymous> (/home/yusuf/Masaüstü/node/index.js:10:19)'n    at Module._compile (module.js:446:26)'n    at Object..js (module.js:464:10)'n    at Module.load (module.js:353:31)'n    at Function._load (module.js:311:12)'n    at Array.0 (module.js:484:10)',
  sql: 'SELECT * FROM deneme',
  typeCast: true,
  nestTables: false,
  _resultSet: null,
  _results: [],
  _fields: [],
  _index: 0,
  _loadError: null,
  _events: { error: [Function], packet: [Function], end: [Function] } }

您正在尝试同步而不是异步地执行某些操作。

你的问题在这里:

data = connection.query('SELECT * FROM deneme', function(err, rows, fields){
    if(err) throw err;
    veri = rows;
    return veri;
});
console.log(data);

在回调执行之前记录数据。这就是为什么你需要在它的回调中有代码,所以它说"一旦你完成了获取数据库结果,做这个"。

data = connection.query('SELECT * FROM deneme', function(err, rows, fields){
    if(err) throw err;
    veri = rows;
    console.log(veri); // will be logged once its finished
});

您可以通过以下方式访问该函数之外的结果:

var results;
data = connection.query('SELECT * FROM deneme', function(err, rows, fields){
    if(err) throw err;
    veri = rows;
    results = veri;
    someOtherFunction();
});
var someOtherFunction = function(){
  console.log(results);
}

你可以看看一个叫做async的模块,它擅长做你想做的事情。

https://github.com/caolan/async

p。S

欢迎使用nodejs