Pare de arredondar IDs int64 no caminho de volta para o servidor

Fixkamo-internal
Navios
19 de agosto de 2026 às 02:02 UTC
Autor
kamo
Enviar
1709c43

Varrer do cliente metade do trabalho int64 id. Cada um destes obteve um ID que o servidor tinha enviado intacto e colocá-lo através de Number()/parseInt(), que roda qualquer coisa passado 2^53 -- então o pedido nomeou uma linha que não existe. Vários sentaram-se ao lado de uma chamada de irmão que já enviou o mesmo ID exatamente, que é o que os torna visíveis: - fichárioApi.shareBinder enviou o Number (memberId) enquanto o unshareBinder o envia inteiro, por isso um o fichário pode ser partilhado e depois não ser partilhado. - MemberCreateForm enviou Number(memberId) para atribuir uma caixa de correio, em seguida, usou o mesmo ID intacta no caminho da caixa de correio primária uma chamada mais tarde -- duas chamadas, dois membros diferentes. - Os catadores de sinais eletrônicos arredondaram o ID do membro, o UID da conta e o membro da conta id, anexando sinalizadores aos IDs que não existem. - Ordens de comércio analisadas por um comprador datilografadoUid com parseInt, assim colando um real 19-digit uid criou a ordem contra um comprador diferente. - PipelineAplicaçõesTab adaptado hipotecaAppsApi exato string uid com Number(), e que o UID arredondado então dirigiu roteamento E ********************** -- a status escrever contra o pedido de empréstimo errado. Seu mapa dedupe e conjunto de seleção são agora com a tecla String( uid); os dois endpoints respondem com diferentes tipos de JS para o mesmo aplicação, então uma chave numérica nunca poderia corresponder a uma string. Tipos alargam-se para `string número' em vez de `string`: um número é o que um serviço que não foi reconstruído ainda envia, e já está arredondado até lá. As duas aritméticas os usos de um uid foram semeamento demo, não identidade, e agora coerce explicitamente e localmente. scripts/check-int64-zod-ids.mjs junta-se ao teste npm e fecha a porta na armadilha específica que começou isto: uma união zod toma o primeiro ramo correspondente, assim z.union([z.coerce.number(), z.string()]) analisa um id exato diretamente de volta para um lossy dobrar durante a leitura quase idêntica à ordem correta. Teste de mutação contra o defeito original da OrganizaçãoDTOSchema.

Todas as alterações

Como o que vês no transporte?

Cada uma dessas atualizações pousa automaticamente em seu espaço de trabalho. Comece grátis e veja crescer semana após semana.

Começar Livre Para SempreVer Preços