我正在尝试创建带有可选参数的函数,
async find(query: string, parameters?: string): Promise<T[]> {
const stmt: sqlite3.Statement = await this.db.prepare(query)
const info: T[] = stmt.all(parameters)
this.db.close()
return info
}
如果我不提供任何参数,我仍然会收到错误消息:RangeError: Too many parameter values were provided
,如果不提供任何参数,我该如何使实际上什么也不做?
答案 0 :(得分:1)
您似乎正在使用sqlite3
npm软件包。我以前从未使用过该库,但是从他们的API documentation看来,您想将一个对象或数组作为参数而不是简单的字符串作为参数(它应该是undefined
如果您仅使用一个参数调用了find
。
// Key-value pairs as parameters
async find(query: string, parameters: Record<string, any> = {}): Promise<T[]> {
const stmt: sqlite3.Statement = await this.db.prepare(query)
const info: T[] = stmt.all(parameters)
this.db.close()
return info
}
// Array of parameters
async find(query: string, ...parameters: any[]): Promise<T[]> {
const stmt: sqlite3.Statement = await this.db.prepare(query)
const info: T[] = stmt.all(parameters)
this.db.close()
return info
}