TL; DR: я не могу прочитать свою базу данных sqlite с помощью Knex в React.
Используя приложение create-реакции-приложение, я создаю новое одностраничное приложение:
npx create-react-app knex-react && cd knex-react
Я устанавливаю knex, sqlite3 (а также ms sql, не знаю почему, но в противном случае получаю ошибку):
npm install knex sqlite3 mssql
I измените каталог на publi c и создайте новую базу данных:
cd public
sqlite3 test.db
Я создаю файл с именем insert. sql со следующим текстом внутри:
DROP TABLE IF EXISTS people;
CREATE TABLE people (
forename text NOT NULL,
surname text NOT NULL,
PRIMARY KEY (forename, surname)
);
INSERT INTO people (forename, surname)
VALUES ('Bob', 'White'),
('Brad', 'Brown'),
('Jill', 'Green');
в sqlite, я вставляю этот файл и проверяю правильность:
sqlite> .read insert.sql
sqlite> SHOW * FROM people;
Это выдает, как следует:
Bob|White
Brad|Brown
Jill|Green
Я редактирую src / App. js, чтобы прочитать следующее:
import React from 'react';
import './App.css';
var knex = require('knex')({
client: 'sqlite3',
connection: {
filename: './test.db'
},
});
console.log(knex.select().table('people'));
function App() {
return (
<div className="App">
<header className="App-header">
<p>Just a paragraph</p>
</header>
</div>
);
}
export default App;
Я запускаю npm start
и открываю журнал консоли: соответствующая строка гласит:
Builder {client: Client_SQLite3 и: Builder, _single: {…}, _statements: Array (0), _method: "select",…}
Это не то, что я ожидаю, документация говорит мне, что я должен получить "массив объектов, выбранных из г Атабаза "Так Боб, Брэд и Джилл. Я ничего не получаю.
Что я делаю не так? Извиняюсь за длинную преамбулу, но я хотел привести полный минимальный пример.
Я использую Node: v12.6.0 в Ubuntu 18.04.4 LTS.
NB - Первым моим предположением было то, что я Поместил test.db в неправильный каталог. Я буквально пытался поместить его везде без удачи ...