Este blog se publicó originalmente en el blog personal de David Ostrovsky. Para ver la entrada original, haga clic en aquí.
TL;DR: SELECT myBucket.* FROM myBucket
Un cambio en la forma en que N1QL devuelve los resultados de las consultas estrella en Couchbase Server 4.1 parece haber roto la forma en que el SDK .NET deserializa los resultados devueltos. Esto causa que el Consulta
para devolver el número correcto de resultados, pero con todas las propiedades en su valor por defecto. La razón es que una consulta como SELECT * FROM por defecto
por defecto produce ahora el siguiente resultado JSON:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[ { "por defecto": { "prop1": "...", "prop2": "..." } }, { "por defecto": { "prop1": "...", "prop2": "..." } } ] |
Como puede ver, cada documento se devuelve como una propiedad bajo el nombre del bucket, mientras que la implementación .NET SDK espera los resultados como solían ser en las versiones anteriores de N1QL, como un array de cuerpos de documentos JSON:
1 2 3 4 5 6 7 8 9 10 11 12 |
[ { "prop1": "...", "prop2": "...", }, { "prop1": "...", "prop2": "...", } ] |
Por suerte, podemos solucionarlo fácilmente seleccionando el contenido del campo por defecto
en lugar de *
en nuestra consulta, así: SELECT default.* FROM default
que ahora devolverá los resultados en el formato que espera el SDK de .NET.
Pruébelo y compruebe que el Consulta
devuelve ahora objetos con todos los valores correctamente deserializados.