如何解决在“:”Where 子句处或附近出现语法错误

5 postgresql repository-pattern typeorm

我是编码新手,正在努力发展新技能。

我陷入了尝试根据 PostgreSQL 任务表中的用户 ID 检索数据的阶段。

我正在使用 typeorm 来实现以下是我的代码

 async getTasks(
    getTasksFilterDTO: GetTasksFilterDTO,
    user: User,
  ): Promise<Task[]> {
    const { status, search } = getTasksFilterDTO;
    const query = this.createQueryBuilder('task');

    query.where('task.userId = : userId', { userId: user.id });

    const tasks = await query.getMany();
    return tasks;
  }
Run Code Online (Sandbox Code Playgroud)

我在线路中遇到错误

query.where('task.userId = : userId', { userId: user.id });
Run Code Online (Sandbox Code Playgroud)

错误是[ExceptionsHandler] 位于或接近“:”的语法错误 +736ms QueryFailedError:位于或接近“:”的语法错误

at new QueryFailedError (C:\tutorials\nestjs-task-management\node_modules\typeorm\error\QueryFailedError.js:11:28)
at Query.callback (C:\tutorials\nestjs-task-management\node_modules\typeorm\driver\postgres\PostgresQueryRunner.js:176:38)
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我理解我所犯的错误吗?

小智 1

:您应该删除和之间的空格userId

query.where('task.userId = :userId', { userId: user.id });
Run Code Online (Sandbox Code Playgroud)