RX0049

Domínio: Execução

Mensagem de erro

data.add[%s, …] recusado: a chave %s já existe, o add nunca sobrescreve; use data.update

Na mensagem, %s marca um valor que o motor preenche quando levanta o erro.

A história

Você usou data ponto add com uma chave que já existe, e o motor recusou. Vamos entender a divisão de tarefas. No rush, existem duas portas de escrita, espelhadas. A porta add serve para despejar um item novo, e nunca sobrescreve. A porta update serve para sobrescrever uma chave existente. Assim, sobrescrever tem exatamente uma porta. A mensagem informa o nome da coleção e a chave que já existia. A recusa também vale se a mesma chamada nomeia a chave duas vezes. Por que não deixar o add substituir o valor? Porque o autor poderia nem saber que a chave já estava lá, e perderia um dado sem perceber. Exemplo: você tem um mapa com a chave nome, e chama add de novo com a chave nome. Antes, o erro saía genérico, dizendo só que um verbo disse não, sem dizer qual lei ou qual chave. Agora é preciso. A correção: se a intenção é mudar o valor, use data ponto update. Se a intenção é um item novo, escolha outra chave.

Texto do catálogo de erros do motor do Rush.