Loopback post 请求无法过滤和数组

Loopback post request cannot filter and array

我有一条 POST 道路 arrayQueue。我想在我的数据源中创建它们之前过滤它们。

我试过这样做:

  async createarraywithcheck(
    @requestBody(/*...*/)
    queues: [Omit<Queue, 'id'>],
  ): Promise<Queue[]> {
    queues = queues.filter(queue => queue.title.length < 10); //error here
    return this.queueRepository.createAll(queues);
}

但是我得到这个错误:

Type 'Pick<Queue, "getId" | "getIdObject" | "toJSON" | "toObject" | "title">[]' 
is not assignable to type 
'[Pick<Queue, "getId" | "getIdObject" | "toJSON" | "toObject" |"title">]'.

Target requires 1 element(s) but source may have fewer.ts(2322)

我不明白其中的区别,对我来说它们都是 Pick<Queue, ....>.

的数组

我该如何解决?

如前所述,问题出在您的 queues 参数类型上。

您设置的类型为[Omit<Queue, 'id'>],即a tuple。不是任何元组,而是只有一个参数的元组。

在javascript中,元组基本上就是一个数组。如果你过滤这个数组,如果 none 项通过条件会怎样?好吧,你 return 一个空数组。 由于您是 re-assigning 到 queues,您可能正在执行以下操作:

queues = [] // here you have the error

解决方案是以下之一:

  1. const filteredQueues: Omit<Queue, 'id'>[] = queues.filter(queue => queue.title.length < 10)
  2. queues: Omit<Queue, 'id'>[]