Estoy tratando de consultar la información de Twin desde Azure IoT Hub usando el código de muestra que se muestra a continuación. Pero no estoy seguro de por qué necesitamos query.nextAsTwin(onResults) 2 veces. ¿Algún impacto si elimino el 2sd?
referencia: https://github.com/Azure/azure-iot-sdk-node/blob/main/service/samples/javascript/twin_query.js
var Registry = require('azure-iothub').Registry; var connectionString = process.env.IOTHUB_CONNECTION_STRING; var registry = Registry.fromConnectionString(connectionString); var query = registry.createQuery('SELECT * FROM devices', 100); var onResults = function(err, results) { if (err) { console.error('Failed to fetch the results: ' + err.message); } else { // Do something with the results results.forEach(function(twin) { console.log(twin.deviceId); }); if (query.hasMoreResults) { query.nextAsTwin(onResults); } } }; query.nextAsTwin(onResults);El objeto de consulta se instancia con un tamaño de página (hasta 100). Luego se recuperan varias páginas llamando al método
nextAsTwinvarias veces.
Si tiene más de 100 páginas, puede llamar a nextAsTwin dos veces; de lo contrario, puede eliminar la redundancia.
Puede consultar otro ejemplo: Comenzar con dispositivos gemelos (Node.js)
En el código que publicó, onResults es una función que imprime la identificación del dispositivo para cada gemelo devuelto en el resultado de la consulta. Si la consulta indica más resultados, llama a query.nextAsTwin(onResults); otra vez. Esto no es redundante; es una función recursiva que seguirá llamándose a sí misma hasta que no haya más resultados en la consulta.
En su ejemplo, la consulta devolverá 100 resultados a la vez, como se especifica en el parámetro pageSize en su código:
registry.createQuery('SELECT * FROM devices', 100); Por lo tanto, serán necesarias varias llamadas a nextAsTwin cuando haya más de 100 resultados.