У меня есть простая настройка маршрута GET с Koa и sql3lite, которая извлекает из файла json некоторые данные с использованием оболочки.
Вспомогательная оболочка sql3lite предоставляет функцию инициализации для основного сервера index.js
файл для загрузки в память при запуске:
index.js
const data = require('./data');
data.initialize();
const server = createServer();
server.listen(PORT, () => {
console.log(`server listening on port ${PORT}`);
});
Файл data.js
служит оболочкой для sqlite3 библиотека узлов, поэтому маршруты могут вызывать метод connection()
индивидуально.
data.js
const connection = new sqlite3.Database(':memory:');
function initialize() {
connection.serialize(() => {
connection.run('CREATE TABLE meter_reads (cumulative INTEGER, reading_date STRING, unit STRING)');
const { electricity } = sampleData;
electricity.forEach((data) => {
connection.run(
'INSERT INTO meter_reads (cumulative, reading_date, unit) VALUES (?, ?, ?)',
[data.cumulative, data.readingDate, data.unit],
);
});
});
}
module.exports = {
initialize,
connection,
};
Проблема У меня возникла проблемаотправляет объект данных обратно клиенту или почтальону при вызове экспортированного метода connection
:
маршрут коа
const db = require('../data');
router.get('/meter/readings', async (ctx, next) => {
ctx.body = await db.connection.all('SELECT * FROM meter_reads', (err, data) => data);
});
GET запрос на маршрутизациюрезультат : {
"open": true,
"filename": ":memory:",
"mode": 65542
}
Интересная причуда:
Оборачивая объект data
, полученный с помощью метода db.connection.all()
, описанного выше, в console.log()
,Я могу распечатать ожидаемые данные на сервере узла.Это почти как ctx.body
что-то напортачил.До сих пор я был опытным парнем, поэтому извиняюсь, если это ошибка новичка!