Как сделать так, чтобы этот код сохранил в таблицу pdf-файл (Node.js)?
Этот код выводит 'true', однако в базе данных NULL. Колонка в бд - binary. Думаю, проблема может быть в том, что предварительно ещё нужно перевести файл в бинарное представление.. если так, подскажите какой-нибудь способ или пакет, пожалуйста
app.post('/users/pdf', function(req, res, next) { if (!req.body) return res.sendStatus(400) const email = req.body.email for_pdf.get_by_email( email, (err, users) => { if(err) return next(err) const doc = new jsPDF() for_pdf.add_pdf( email, doc.text(JSON.stringify(users), 10, 10), (err) => { if(err) return next(err) res.format({ json: () => { res.send('true') } }) } ) } ) }) |
app.post('/users/pdf', function(req, res, next) { if (!req.body) return res.sendStatus(400) const email = req.body.email for_pdf.get_by_email( email, (err, users) => { if(err) return next(err) const doc = new jsPDF() for_pdf.add_pdf( email, doc.text(JSON.stringify(users), 10, 10), (err) => { if(err) return next(err) res.format({ json: () => { res.send('true') } }) } ) } ) })
Методы класса:
class For_pdf { static get_by_email(email, cb) { if(!email) return cb(new Error('Please provide an email')) db.get(`SELECT email, firstName, lastName, image FROM users WHERE email = ?`, email, cb) } static add_pdf(email, data, cb) { if(!email) return cb(new Error('Please provide an email')) const sql_pdf = `UPDATE users SET pdf = ? WHERE email = ?` db.run(sql_pdf, data.pdf, email, cb) } } |
class For_pdf { static get_by_email(email, cb) { if(!email) return cb(new Error('Please provide an email')) db.get(`SELECT email, firstName, lastName, image FROM users WHERE email = ?`, email, cb) } static add_pdf(email, data, cb) { if(!email) return cb(new Error('Please provide an email')) const sql_pdf = `UPDATE users SET pdf = ? WHERE email = ?` db.run(sql_pdf, data.pdf, email, cb) } }
Дополнительно:
Вообще, хранить в базе файлы - в большинстве случаев, не самая лучшая затея. Лучше хранить в поле путь до файла на сервере.
Касательно именно темы вопроса. Не знаком с нодой, но навскидку:
- Не вижу, где выполняется коммит.
- Нет проверки "не выдал ли запрос к базе ошибку (собственно может это запрос падает)".
Запрос работает исправно, т.к. я его уже исправлял и у меня sql-ошибки прерывают работу сервера. Про коммит не очень понял. Спасибо, что обратили внимание на вопрос
В модулях для python, с которым я работаю, это, обычно, нужно делать вручную:
connection.commint() # connection - класс подключения к базе. |
connection.commint() # connection - класс подключения к базе.
Может:
db.run(sql_pdf, data.pdf, email, cb)
DB/run автоматически выполняет коммит, но тут я без понятия.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Для сохранения данных в таблицу PDF-файл в Node.js можно воспользоваться библиотекой `pdfkit`. Ниже приведен пример кода, который демонстрирует, как создать PDF-файл с таблицей данных:
```php
const PDFDocument = require('pdfkit');
const fs = require('fs');
// Создаем новый PDF-документ
const doc = new PDFDocument();
doc.pipe(fs.createWriteStream('output.pdf'));
// Добавляем таблицу с данными
const table = [
['Имя', 'Возраст', 'Email'],
['John Doe', 30, 'john.doe@example.com'],
['Jane Smith', 25, 'jane.smith@example.com'],
['Bob Johnson', 40, 'bob.johnson@example.com']
];
doc.font('Helvetica-Bold');
doc.fontSize(12);
doc.text('Список пользователей', { align: 'center' });
doc.moveDown();
doc.font('Helvetica');
doc.fontSize(10);
table.forEach(row => {
row.forEach(cell => {
doc.cell(200, 20, cell, { border: true });
});
doc.moveDown();
});
// Завершаем создание PDF-файла
doc.end();
console.log('PDF-файл успешно создан');
```
Этот код создаст PDF-файл с таблицей данных о пользователях. Вы можете настроить содержимое таблицы и стиль отображения данных в соответствии с вашими потребностями. Не забудьте установить библиотеку `pdfkit` перед запуском этого кода, используя команду `npm install pdfkit`.
Надеюсь, это поможет вам сохранить данные в таблицу PDF-файл в Node.js. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать!

Для сохранения данных в формате PDF в Node.js, вам потребуется использовать стороннюю библиотеку, такую как `pdfkit`. Эта библиотека позволяет создавать PDF-файлы на лету.
Вот пример кода, который поможет вам сохранить данные в таблицу PDF-файл:
const PDFDocument = require('pdfkit'); const fs = require('fs'); const data = [ { name: 'John Doe', age: 30 }, { name: 'Jane Smith', age: 25 }, { name: 'Bob Johnson', age: 40 } ]; const doc = new PDFDocument(); doc.pipe(fs.createWriteStream('output.pdf')); doc.fontSize(12); doc.text('Name\tAge', { bold: true }); data.forEach((row) => { doc.text(`${row.name}\t${row.age}`); }); doc.end(); console.log('PDF created successfully');
В этом коде мы используем библиотеку `pdfkit`, чтобы создать новый PDF-документ. Затем мы добавляем данные в таблицу, используя метод `text` для каждой строки данных. Наконец, мы завершаем создание документа и сохраняем его в файл `output.pdf`.
Не забудьте установить библиотеку `pdfkit`, выполнив команду `npm install pdfkit` перед запуском этого кода.
Теперь у вас должен быть PDF-файл с данными в таблице. Надеюсь, это поможет вам решить вашу проблему!