Javascript 为什么在ExpressJS中使用then()回调时承诺给我一个错误?

Javascript 为什么在ExpressJS中使用then()回调时承诺给我一个错误?,javascript,node.js,reactjs,Javascript,Node.js,Reactjs,我不熟悉NodeJS和ExpressJS。我正在尝试执行一个简单的数据库查询 db.execute('SELECT * FROM restaurant').then().catch() 我得到了这个错误: db.execute('SELECT*FROM restaurant')。然后().catch() ^ TypeError:无法读取未定义的属性“then” 我使用的是在phpMyAdmin上运行的MySQL数据库。这是我的数据库快照 我已经检查了我的数据库,它已连接。下面是我在App.j

我不熟悉NodeJS和ExpressJS。我正在尝试执行一个简单的数据库查询

db.execute('SELECT * FROM restaurant').then().catch()
我得到了这个错误:

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

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

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

我已经检查了我的数据库,它已连接。下面是我在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);

您需要在配置文件中导出池的预期版本,如下所示:

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

module.exports=db.promise()

有关更多信息,请查看。

您需要在配置文件中导出池的预期版本,如下所示:

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

module.exports=db.promise()

有关更多信息,请查看。

我会问这样一个问题:
db.execute('SELECT*FROM restaurant')
返回未定义?
db.execute
不是承诺。您可以使用
。然后
仅用于承诺。你必须做一些类似于
async-await
的事情,注意,
bodyParser
已被弃用,它应该会给你一个错误,使用
app.use(express.urlcoded({extended:false}))
insteadasync-await是一种用于承诺的语法。。。如错误所示,他的
db.execute
返回undefined。请尝试共享
config/db
文件的内容。。。。因为这个错误意味着这首先不是承诺……所以查看您传递的内容会很有帮助。
'SELECT*FROM restaurant'
toI会问这样一个问题:
db.execute('SELECT*FROM restaurant')
返回未定义?
db.execute
不是承诺。您可以使用
。然后
仅用于承诺。你必须做一些类似于
async-await
的事情,注意,
bodyParser
已被弃用,它应该会给你一个错误,使用
app.use(express.urlcoded({extended:false}))
insteadasync-await是一种用于承诺的语法。。。如错误所示,他的
db.execute
返回undefined。请尝试共享
config/db
文件的内容。。。。因为这个错误意味着这在一开始就不是承诺……所以查看您将传递给的内容将很有帮助
'SELECT*FROM restaurant'