Azure 示例代码上的孪生查询是多余的 query.nextAsTwin(onResults)?
Twin query on Azure sample code is redundant query.nextAsTwin(onResults)?
我正在尝试使用以下示例代码从 Azure IoT 中心查询孪生信息。但我不确定为什么我们需要 query.nextAsTwin(onResults) 2 次。如果我删除 2sd 有什么影响吗?
参考: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);
根据IoT Hub query language for device and module twins, jobs, and message routing:
The query object is instantiated with a page size (up to 100). Then multiple pages are retrieved by calling the nextAsTwin
method multiple times.
如果您的页面大小超过 100,那么您可以调用 nextAsTwin
两次,否则您可以删除冗余。
在您发布的代码中,onResults
是一个函数,用于打印查询结果中每个双胞胎 return 的设备 ID。如果查询指示更多结果,它会再次调用 query.nextAsTwin(onResults);
。这不是多余的;它是一个递归函数,会不断调用自身,直到查询中没有更多结果。
在您的示例中,查询将一次 return 100 个结果,如代码中 pageSize 参数中指定的那样:
registry.createQuery('SELECT * FROM devices', 100);
因此,当结果超过 100 个时,将需要多次调用 nextAsTwin
。
我正在尝试使用以下示例代码从 Azure IoT 中心查询孪生信息。但我不确定为什么我们需要 query.nextAsTwin(onResults) 2 次。如果我删除 2sd 有什么影响吗?
参考: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);
根据IoT Hub query language for device and module twins, jobs, and message routing:
The query object is instantiated with a page size (up to 100). Then multiple pages are retrieved by calling the
nextAsTwin
method multiple times.
如果您的页面大小超过 100,那么您可以调用 nextAsTwin
两次,否则您可以删除冗余。
在您发布的代码中,onResults
是一个函数,用于打印查询结果中每个双胞胎 return 的设备 ID。如果查询指示更多结果,它会再次调用 query.nextAsTwin(onResults);
。这不是多余的;它是一个递归函数,会不断调用自身,直到查询中没有更多结果。
在您的示例中,查询将一次 return 100 个结果,如代码中 pageSize 参数中指定的那样:
registry.createQuery('SELECT * FROM devices', 100);
因此,当结果超过 100 个时,将需要多次调用 nextAsTwin
。