Lookups per menschenlesbarem Schlüssel
Ein Lookup löst genau eine Zeile auf dem Server auf und löst einen Fehler aus, wenn es nicht genau eine gibt:
NoMatchFoundError, wenn nichts passt, MultipleMatchesFoundError, wenn mehrere passen.
findByNameüberall, wo die API nachnamefiltert: States, Labels, Cycles, Module, Projekte, Teamspaces, Views, Wiki-Collections, Work-Item-Typen und -Eigenschaften, Eigenschaftsoptionen und -kontexte und mehr.roles.findBySlug,estimates.points.findByKey,releases.tags.findByVersion.customerProperties.findByDisplayName, nebenfindByName.
await client.v2.workspaces.projects.states.findByName("acme", "ENG", "Todo");
await client.v2.workspaces.roles.findBySlug("acme", "admin", { namespace: "workspace" });
await client.v2.workspaces.projects.estimates.points.findByKey("acme", "ENG", estimateId, 3);
Bei benutzerdefinierten Eigenschaften ist name der maschinenlesbare Schlüssel (zum Beispiel story_points),
nicht das in der App angezeigte Label.
Beide Fehler erweitern PlaneError, nicht PlaneApiError, sodass das Abfangen von PlaneApiError allein
sie nicht abfängt:
import { MultipleMatchesFoundError, NoMatchFoundError } from "@hoyasumii/plane";
try {
await client.v2.workspaces.projects.states.findByName("acme", "ENG", "Todo");
} catch (error) {
if (error instanceof NoMatchFoundError) console.log("no such state");
else if (error instanceof MultipleMatchesFoundError) console.log("the name is ambiguous");
else throw error;
}