为什么在答应给我一个错误后在ExpressJS中使用then()回调?

时间:2019-02-15 04:51:17

标签: javascript node.js reactjs

我是NodeJS和ExpressJS的新手。我正在尝试执行一个简单的数据库查询。

db.execute('SELECT * FROM restaurant').then().catch()

我遇到此错误:

  

db.execute('SELECT * FROM restaurant')。then()。catch()                                         ^

     

TypeError:无法读取未定义的属性'then'

我正在使用在phpMyAdmin上运行的MySQL数据库。这是我的数据库快照。

enter image description here

我已经检查了数据库,它已连接。下面是我在App.js中的代码!

const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
const admin = require('./routes/admin');
const shop = require('./routes/shop');
const db = require('./config/db');

const app = express();
app.use(bodyParser.urlencoded({extended:false}))

app.use('/admin',admin);
app.use('/shop',shop)

db.execute('SELECT * FROM restaurant').then().catch()

app.get('/', (req,res) =>{
res.status(200).send('<h3>Front page</h3>')
});


app.get('*', (req,res) =>{
res.status(404).send('<h1>File not found</h1>')
});

const port = process.env.PORT || 5000;
app.listen(port);

console.log('App is listening on port ' + port);

我希望餐厅名称在浏览器中显示。

下面是config / db文件:

var mysql = require('mysql2');
var db = mysql.createPool({
host : 'localhost',
user: 'root',
database:'pos',
password:''
});

module.exports=db 

1 个答案:

答案 0 :(得分:3)

您需要这样在配置文件中导出池的承诺版本:

var mysql = require('mysql2');
var db = mysql.createPool({
   host : 'localhost',
   user: 'root',
   database:'pos',
   password:''
});

module.exports=db.promise()

有关更多信息,请检查mysql2 docs