Я делаю простое приложение, используя Electron с Node.js и SQLite 3. Моя цель здесь - обернуть базовый запрос SELECT
с помощью моей функции.Тем не менее, он не может получить содержимое из базы данных.
Я знаю, что могу выбрать столбец firstname
строки следующим образом:
storage.all('select firstname from users where id = 1', [], ( err, rows ) => {
if ( err ) {
throw `Error while retrieving ${q}`;
};
rows.forEach(( row ) => {
n.webContents.send( 'userName', row.firstname );
console.log( 'query output sent: ' + row.firstname );
});
});
storage
здесь мойнастройка базы данных.Вышеприведенное работает хорошо и позволяет мне отправлять мое имя пользователя в мой внешний вид.
Но если я оберну его в функцию, подобную следующей:
let select = ( items, db, where, sign, whereNew ) => {
// preset sql query
let q = `select ${items} from ${db}`;
if ( where && sign && whereNew ) { q += ` where ${where} ${sign} ${whereNew}`};
let arr;
console.log(q);
// perform query on the database
return storage.each(q, [], ( err, row ) => {
if ( err ) {
throw `Error while retrieving ${q}`;
};
return row[items];
});
};
Затем вывод на моей консолибудет пустым Database
объектом (см. ниже).
Вот как я вызываю эту функцию и регистрирую ее в консоли:
let u = select( 'firstname', 'users', 'id', '=', 1 );
console.log( 'this log ' + u );
И это вывод консоли:
> szwaczki-react@0.1.0 dev /Users/middleman/Documents/Programowanie/MyApps/szwaczki-react-sqlite
> concurrently "BROWSER=none npm run start" "wait-on http://localhost:3000 && electron ."
[0]
[0] > szwaczki-react@0.1.0 start /Users/middleman/Documents/Programowanie/MyApps/szwaczki-react-sqlite
[0] > react-scripts start
[0]
[0] Starting the development server...
[0]
[1] Connected to the database.sqlite
[0] Compiled with warnings.
[0]
[0] ./src/app.js
[0] Line 2: 'ReactDOM' is defined but never used no-unused-vars
[0]
[0] ./src/view/button.js
[0] Line 2: 'ReactDOM' is defined but never used no-unused-vars
[0]
[0] Search for the keywords to learn more about each warning.
[0] To ignore, add // eslint-disable-next-line to the line before.
[0]
[1] select firstname from users where id = 1
[1] this log [object Database]
[1] query output sent: Mateusz
^C[0] BROWSER=none npm run start exited with code 0
[1] wait-on http://localhost:3000 && electron . exited with code 0
Что я делаю не так?