Я пишу бот-диск с использованием Discord.js и экспериментирую с SQLite, прежде чем добавить его в свой основной проект. Я более или менее следовал этому руководству , а затем изменил код, чтобы он больше походил на мои цели для основного проекта.
есть один фрагмент кода, который вызывает проблемы:
sql.get(`SELECT * FROM scores WHERE userId ="${message.author.id}"`).then( row =>
{
if ( row )
{
let nufu = JSON.stringify( new foo() );
sql.run(`UPDATE scores SET object = ${nufu} WHERE userId = ${message.author.id}`);
}
else
{
sql.run("INSERT INTO scores (userId, object) VALUES (?,?)", [message.author.id, JSON.stringify( new foo() )] );
}
}).catch( () => {
console.error;
sql.run("CREATE TABLE IF NOT EXISTS scores (userId TEXT, object TEXT)");
});
В частности ${nufu}
вызывает:
(узел: 12348) UnhandledPromiseRejectionWarning: Ошибка: SQLITE_ERROR: нераспознанный токен: "{"
(узел: 12348) UnhandledPromiseRejectionWarning: необработанное отклонение обещания. Эта ошибка возникла либо из-за того, что внутри асинхронной функции не был выполнен блок catch, либо из-за отклонения обещания, которое не было обработано с помощью .catch (). (код отклонения: 1)
замена ${nufu}
на "any_other_string"
устраняет ошибку, но ${JSON.stringify( new foo() )}
- нет,
${message.author.id}
не вызывает таких проблем.
Что я сделал не так?