У меня следующий запрос:
'INSERT INTO guild (id, name, db_permissions, join_message, leave_message, verify_role) VALUES (?, ?, ?, ?, ?, ?)', guild
Где guild
- это объект, я пытаюсь использовать значения объекта в качестве параметров для запроса, первые 3 параметра не могут быть нулевыми, но в моем коде дополнительные параметры возвращают undefined, что приведет к ошибке, которая говорит слишком мало параметров, я решил попробовать заменить undefined на null Object.values(parameters).map(x => x == undefined ? null : x)
однако это дало бы мне
[ '555340371060850708', 'Test', true, null, null, null ]
SQLite3 can only bind numbers, strings, Buffers, and null
Когда я присоединяюсь как Object.values(parameters).map(x => x == undefined ? null : x).join(', ')
Я получаю: 555340371060850708, Test, true, , ,
Что приводит к Too few parameters provided
, что я могу сделать, чтобы правильно вставить объект Гильдии? моя структура базы данных:
CREATE TABLE "guild" (
"id" TEXT NOT NULL UNIQUE,
"name" TEXT NOT NULL,
"db_permissions" INTEGER NOT NULL,
"join_message" TEXT,
"leave_message" TEXT,
"verify_role" TEXT,
PRIMARY KEY("id")
);
Guild:
export class Guild {
private id: string
private name: string
private dbPermissions: number
private joinMessage?: string
private leaveMessage?: string
private verifyRole?: string
constructor(id: string, name: string, dbPermissions: number, joinMessage?: string, leaveMessage?:string, verifyRole?:string) {
this.id = id
this.name = name
this.dbPermissions = dbPermissions
this.joinMessage = joinMessage
this.leaveMessage = leaveMessage
this.verifyRole = verifyRole
}
}
const guild = new Guild(message.guild.id, message.guild.name, 1)