При подключении БД ошибка: Converting circular structure to JSON
Было изначально решено, что будет отдельно приложение на NextJS и на Node.js бэкенд. Но потом решил, что могу API закинуть в pages и оттуда брать данные.
Так вот, проблема сейчас в том, что я не могу вынести данные с БД на сервер:
const mysql = require('mysql')
const connection = mysql.createConnection({
host: '',
user: '',
password: '',
database: ''
})
exports.query = async(query) => {
try {
const results = await connection.query(query)
await connection.end()
return results
}
catch(error) {
return { error }
}
}
Ну и потом в api/posts/index.js:
import db from '../controllers/database'
module.exports = async(request, response) => {
const sql = `select * from post`
const posts = await db.query(sql)
response.status(200).json({
posts
})
}
Хочу вывести данные, но получаю ошибку:
Converting circular structure to JSON...
Ну а до этого, все было хорошо (когда делал нодовскую маршрутизацию):
router.get('/', (request, response) => {
const sql = `select * from post`
database.query(sql, (error, data, fields) => {
if(error) throw error
response.json({
status: 200,
data,
message: 'Posts lists are retvieved successfully'
})
})
})
Ответы (2 шт):
const mysql = require('mysql')
...
const results = await connection.query(query)
Судя по документации, библиотека mysql не умеет работать с promise, только с callback функциями. Так что, при отдаче ответа вы пытаетесь сериализовать непонятно что.
Пользователь @nörbörnën, был прав - mysql не поддерживает работу с промисами. Для этого нужно переписать как в документации через калбэки.
Но, я решил использовать serverless-mysql:
const mysql = require('serverless-mysql')
const connection = mysql({
config: {
host: 'localhost',
user: 'root',
password: 'pass',
database: 'dbname'
}
})