← Cloudflare Flagship / flagship / reference
Důvody vyhodnocení a chybové kódy
Když vyhodnocujete flag pomocí metody vazby *Details metody nebo SDK OpenFeature, odpověď obsahuje reason pole, které vysvětluje, proč byla vrácena daná hodnota. Pokud dojde k chybě, odpověď obsahuje errorCode .
Důvody vyhodnocení
| Důvod | Popis |
|---|---|
TARGETING_MATCH |
Podmínky cílicího pravidla odpovídaly kontextu vyhodnocení a byla vrácena varianta daného pravidla. |
SPLIT |
Shodovalo se cílicí pravidlo s procentuálním rolloutem. Uživatel spadal do procenta rolloutu a obdržel variantu daného pravidla. |
DEFAULT |
Žádné cílicí pravidlo neodpovídalo kontextu vyhodnocení. Byla vrácena výchozí varianta příznaku. |
DISABLED |
Příznak je vypnutý. Bez ohledu na pravidla cílení byla vrácena výchozí varianta. |
CACHED |
SDK vrátilo výsledek vyhodnocení z mezipaměti. |
ERROR |
Vyhodnocení se nezdařilo a byla vrácena výchozí hodnota. |
Kódy chyb
Pokud dojde k chybě při vyhodnocení, metoda vrátí vámi zadanou výchozí hodnotu. Pole *Details metody obsahují další metadata o chybě.
| Kód chyby | Popis |
|---|---|
TYPE_MISMATCH |
Typ varianty příznaku neodpovídá požadovanému typu. Například při volání getBooleanValue na flagu, jehož varianta je řetězec. Vrátí se výchozí hodnota. |
FLAG_NOT_FOUND |
Zadaný klíč flagu v aplikaci neexistuje. Vrátí se výchozí hodnota. |
INVALID_CONTEXT |
Kontext vyhodnocení obsahuje nepodporované hodnoty, například objekty nebo pole při HTTP vyhodnocení. Vrací se výchozí hodnota. |
PARSE_ERROR |
SDK obdrželo neplatnou odpověď vyhodnocení. Vrací se výchozí hodnota. |
GENERAL |
Během vyhodnocení došlo k neočekávané chybě, například k vypršení časového limitu nebo výpadku sítě. Vrací se výchozí hodnota. |
Příklad
Následující příklad zkoumá podrobnosti vyhodnocení vrácené getBooleanDetails:
const details = await env.FLAGS.getBooleanDetails("my-feature", false, {
userId: "user-42",
});
switch (details.reason) {
case "TARGETING_MATCH":
console.log(`Matched targeting rule, variant: ${details.variant}`);
break;
case "SPLIT":
console.log(`Included in rollout, variant: ${details.variant}`);
break;
case "DEFAULT":
console.log("No rule matched, using default variant");
break;
case "DISABLED":
console.log("Flag is disabled");
break;
}
if (details.errorCode) {
console.error(`Evaluation error: ${details.errorCode}`);
}const details = await env.FLAGS.getBooleanDetails("my-feature", false, {
userId: "user-42",
});
switch (details.reason) {
case "TARGETING_MATCH":
console.log(`Matched targeting rule, variant: ${details.variant}`);
break;
case "SPLIT":
console.log(`Included in rollout, variant: ${details.variant}`);
break;
case "DEFAULT":
console.log("No rule matched, using default variant");
break;
case "DISABLED":
console.log("Flag is disabled");
break;
}
if (details.errorCode) {
console.error(`Evaluation error: ${details.errorCode}`);
}