Este blog foi publicado originalmente no blog pessoal de David Ostrovsky's. Para ver a postagem original do blog, clique em aqui.
TL;DR: SELECT myBucket.* FROM myBucket
Uma alteração na forma como o N1QL retorna os resultados das consultas em estrela no Couchbase Server 4.1 parece ter prejudicado a forma como o .NET SDK desserializa os resultados retornados. Isso faz com que o Consulta
para retornar o número correto de resultados, mas com todas as propriedades em seu valor padrão. O motivo é que uma consulta como SELECT * FROM default
padrão agora produz o seguinte resultado JSON:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[ { "default": { "prop1": "...", "prop2": "..." } }, { "default": { "prop1": "...", "prop2": "..." } } ] |
Como você pode ver, cada documento é retornado como uma propriedade sob o nome do bucket, enquanto a implementação do SDK do .NET espera os resultados como costumavam ser nas versões anteriores do N1QL, como uma matriz de corpos de documentos JSON:
1 2 3 4 5 6 7 8 9 10 11 12 |
[ { "prop1": "...", "prop2": "...", }, { "prop1": "...", "prop2": "...", } ] |
Felizmente, podemos corrigir isso facilmente selecionando o conteúdo do padrão
em vez de *
em nossa consulta, dessa forma: SELECT default.* FROM default
que agora retornará os resultados no formato que o SDK do .NET espera.
Experimente e veja que o Consulta
agora retorna objetos com todos os valores corretamente desserializados.