# Upgrade of azure-iothub to 1.7.5 causes error in function node

**URL:** <https://discourse.nodered.org/t/upgrade-of-azure-iothub-to-1-7-5-causes-error-in-function-node/4490>\
**Category:** General\
**Created:** [1 November 2018 23:55 UTC](https://discourse.nodered.org/t/upgrade-of-azure-iothub-to-1-7-5-causes-error-in-function-node/4490 "2018-11-01T23:55:10Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![beneuto](https://avatars.discourse-cdn.com/v4/letter/b/898d66/32.png) [@beneuto](https://discourse.nodered.org/u/beneuto)\
**Post date:** [1 November 2018 23:55 UTC](https://discourse.nodered.org/t/upgrade-of-azure-iothub-to-1-7-5-causes-error-in-function-node/4490/1 "2018-11-01T23:55:10Z")

</div>

The following minimal code works fine in a function node when using azure-iothub@1.7.4 but upgrading to 1.7.5 results in the following error:

"TypeError: Callback has to be a Function"

This code is minimal and almost straight out examples provided and does not seem to have this issue outside of node-red.

I am running on the following:

Node-RED version: v0.19.4  
Node.js version: v8.11.1

* * *

```auto
var iothub = global.get('azure-iothub');

var connectionString = 'HostName=myhub.azure-devices.net;SharedAccessKeyName=nodered;SharedAccessKey=xxxx';

var device = 
    {
        deviceId: 'test' 
    };
 
var registry = iothub.Registry.fromConnectionString(connectionString);

registry.get(device.deviceId, function(err, deviceInfo, res) { 
    });

```

---

<div class="post-metadata">

**Author:** ![beneuto](https://avatars.discourse-cdn.com/v4/letter/b/898d66/32.png) [@beneuto](https://discourse.nodered.org/u/beneuto)\
**Post date:** [10 November 2018 03:00 UTC](https://discourse.nodered.org/t/upgrade-of-azure-iothub-to-1-7-5-causes-error-in-function-node/4490/2 "2018-11-10T03:00:18Z")

</div>

This has been fixed in the azure-iothub library and should be in the next release(1.8.2?).

---

<div class="post-metadata">

**Author:** ![jewendt](https://avatars.discourse-cdn.com/v4/letter/j/3ab097/32.png) [@jewendt](https://discourse.nodered.org/u/jewendt)\
**Post date:** [12 November 2018 02:23 UTC](https://discourse.nodered.org/t/upgrade-of-azure-iothub-to-1-7-5-causes-error-in-function-node/4490/3 "2018-11-12T02:23:53Z")

</div>

Is there a reason you are not using the azure IOT hub nodes rather than using a function?

---

<div class="post-metadata">

**Author:** ![beneuto](https://avatars.discourse-cdn.com/v4/letter/b/898d66/32.png) [@beneuto](https://discourse.nodered.org/u/beneuto)\
**Post date:** [12 November 2018 04:13 UTC](https://discourse.nodered.org/t/upgrade-of-azure-iothub-to-1-7-5-causes-error-in-function-node/4490/4 "2018-11-12T04:13:26Z")

</div>

The node requires a connection string for each device which is impractical for potentially thousands of devices. Furthermore, I am registering devices as they come online so I need to first check if already registered and register in IoT Hub if not.

---

<div class="post-metadata">

**Author:** ![jewendt](https://avatars.discourse-cdn.com/v4/letter/j/3ab097/32.png) [@jewendt](https://discourse.nodered.org/u/jewendt)\
**Post date:** [12 November 2018 04:17 UTC](https://discourse.nodered.org/t/upgrade-of-azure-iothub-to-1-7-5-causes-error-in-function-node/4490/5 "2018-11-12T04:17:50Z")

</div>

Can I get some more details on what exactly you are using and how you are getting it into node-red? I see you are using global somehow... I have not used global before..

---

<div class="post-metadata">

**Author:** ![jewendt](https://avatars.discourse-cdn.com/v4/letter/j/3ab097/32.png) [@jewendt](https://discourse.nodered.org/u/jewendt)\
**Post date:** [12 November 2018 04:19 UTC](https://discourse.nodered.org/t/upgrade-of-azure-iothub-to-1-7-5-causes-error-in-function-node/4490/6 "2018-11-12T04:19:31Z")

</div>

I think there are two different IOTHub nodes out there. One that requires a string for each node and one that requires it to be passed with the payload.
