在typescript中使用promise筛选数组

在typescript中使用promise筛选数组,typescript,Typescript,错误是“类型“Promise”上不存在属性“map” 如何筛选此阵列?filterlabel是类似“Test1”的标签的名称 如何筛选标签?我不明白。 其他过滤器是正确的,但标签过滤器是坏的,因为承诺因为它是一个承诺,所以您应该在过滤之前等待它: const labels=wait r.labels; 结果=结果。过滤器((r)=> labels.map((l)=>l.name==filterLabel)); 而且,看起来您实际上想要的是。一些,而不是。map: const labels=wa

错误是“类型“Promise”上不存在属性“map”

如何筛选此阵列?filterlabel是类似“Test1”的标签的名称

如何筛选标签?我不明白。
其他过滤器是正确的,但标签过滤器是坏的,因为承诺

因为它是一个
承诺
,所以您应该
在过滤之前等待它:

const labels=wait r.labels;
结果=结果。过滤器((r)=>
labels.map((l)=>l.name==filterLabel));
而且,看起来您实际上想要的是
。一些
,而不是
。map

const labels=wait r.labels;
结果=结果。过滤器((r)=>
labels.some((l)=>l.name==filterLabel));

有人有想法吗?那不行。。。当您使用wait时,您需要一个异步函数,然后过滤器就不需要了work@VLAZ你能帮我吗?@Mephisto_08我已经编辑了答案,现在应该可以用了。
if (filterLabel) {
result = result.filter((r) =>
  (r.labels).map((l) => l.name === filterLabel));}
export class Task {
// eslint-disable-next-line new-cap
@PrimaryGeneratedColumn()
id: number;

// eslint-disable-next-line new-cap
@Column()
name: string;

// eslint-disable-next-line new-cap
@Column()
description: string;

// eslint-disable-next-line new-cap
@CreateDateColumn()
created: string;

// eslint-disable-next-line new-cap
@UpdateDateColumn()
updated: string;

// eslint-disable-next-line new-cap
@ManyToMany(() => Label, (label) => label.tasks)
// eslint-disable-next-line new-cap
@JoinTable()
labels: Promise<Label[]>;

// eslint-disable-next-line new-cap
@OneToMany(() => Tracking, (tracking) => tracking.task, {nullable: true})

trackings: Promise<Tracking[]>;
export const getAllTasks = async (req, res) => {
const taskRepository = getRepository(Task);
const tasks = await taskRepository.find(
  {relations: ['trackings', 'labels']});

 const {filterTask, filterDescription, filterLabel} = req.query;
 console.log('1', filterTask, '2', filterDescription, '3', filterLabel, 
 '4');
 let result = [...tasks];

 if (filterTask) {
 result = result.filter((r) => r.name === filterTask);
 }
 if (filterLabel) {
  filter();
 }
 if (filterDescription) {
   result = result.filter((d) => d.description === filterDescription);
 }
  res.status(200).send({data: result});
 };