我有以下查询:
'INSERT INTO guild (id, name, db_permissions, join_message, leave_message, verify_role) VALUES (?, ?, ?, ?, ?, ?)', guild
对象在哪里guild,我试图将对象值用作查询的参数,前 3 个参数不能为空,但在我的代码中,可选参数返回未定义,这会导致错误提示参数太少,我决定尝试用 null 替换 undefinedObject.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,我该怎么做才能正确插入 Guild 对象?我的数据库结构:
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)