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 |
[ { "default": { "prop1": "...", "prop2": "..." } }, { "default": { "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 defectoen 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.