typescript - 打字稿可选参数中断查询
问题描述
我正在尝试创建一个带有可选参数的函数,但是:
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
,如果没有提供参数,我如何才能使参数实际上什么都没有?
解决方案
您似乎正在使用sqlite3
npm 包。我以前从未使用过这个库,但从他们的API 文档看来,您希望将对象或数组作为参数而不是简单的字符串作为参数传递(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
}
推荐阅读
- c# - 如何将我的存储库传递给变量并在同一行中再次将其传递给变量?
- google-drive-api - 如何使用 J2SE 上的 Java API 连接 Google Drive?
- android - 没有枚举常量 com.android.manifmerger.NodeOperationType.MERGE-ONLY-ATTRIBUTES
- unity3d - 如何在 Unity 3D 中获得像素级对象依赖关系?
- kubernetes - 如何在 kubernetes 1.10+ 中查看 coredns 的上游服务器?
- linux - 如何将 valgrind 线程 ID 与 gettid() 或 pthread_self() 匹配
- smartsheet-api - 是否可以使用 Get Sheet 并仅按创建日期过滤?
- mysql - 进行连续数据库备份的策略是什么
- android - Android- Textview 在拖动操作时消失
- android - 为什么在视图中已经设置了 alpha 时 alpha 动画不起作用