ArgumentError('对象 \'deviceInfo' 缺少 属性: deviceId');我该如何解决这个问题?
ArgumentError('The object \'deviceInfo' is missing the property: deviceId'); How do I solve this?
我正在使用 Azure IoT 中心并尝试检索连接到我们工作场所中心的真实设备(非模拟)。该项目是我们正在创建一个公司仪表板来显示和编辑来自我们的 IoT 中心的设备的各个方面。我是一名实习生,所以这确实是我第一次使用 IoT Hub 做任何事情,所以请原谅我的天真。我正在测试只是为了在“registry.create”函数中发送有关设备的基本信息,但我不断收到上述错误。此外,我们的数据库是 Azure SQL.
这是我的代码部分。仅发布必要的代码:
var iothub = require('azure-iothub');
var connectionString = '<Our connection string here>';
var registry = iothub.Registry.fromConnectionString(connectionString);
...
const device = {
deviceId: registry.deviceId,
devStatus: registry.status,
connStatus: registry.connectionState
}
registry.create(device, function(err, deviceInfo, res) {
if (err) {
registry.get(device.deviceId, printDeviceInfo);
console.log(device.deviceId);
}
if (deviceInfo.deviceId) {
printDeviceInfo(err, deviceInfo.deviceId, res)
}
});
function printDeviceInfo(err, deviceInfo, res) {
if (deviceInfo) {
console.log('Device ID: ' + deviceInfo.deviceId);
console.log('Connection state: ' + deviceInfo.connStatus)
}
}
这是设备的数据库模型:
module.exports = (sequelize, Sequelize) => {
const Device = sequelize.define('devices', {
deviceId: {
type: Sequelize.STRING,
required: true
},
devStatus: {
type: Sequelize.BOOLEAN,
allowNull: false,
defaultValue: true
},
});
return Device;
}
不确定可以提供多少帮助,但我们将不胜感激。网上关于此错误的信息不多(Google 中有两页,但都与我的具体问题不相似)..
如果您看到 source code of IOT hub SDKs,您会发现 如果第一个参数不包含 deviceId 属性[=,则创建方法将抛出 ArgumentError
25=]:
因此,您的 deviceId
属性 未填充。 create(DeviceDescription, HttpResponseCallback) creates a new device identity on an IoT hub. You will have to provide a value to it. Registry does not provide those properties you have used in your code. Refer this sample for proper usage of registry.create
. And, I would recommend you to read Understand the identity registry in your IoT hub.
如果您还有其他问题,请告诉我。
我正在使用 Azure IoT 中心并尝试检索连接到我们工作场所中心的真实设备(非模拟)。该项目是我们正在创建一个公司仪表板来显示和编辑来自我们的 IoT 中心的设备的各个方面。我是一名实习生,所以这确实是我第一次使用 IoT Hub 做任何事情,所以请原谅我的天真。我正在测试只是为了在“registry.create”函数中发送有关设备的基本信息,但我不断收到上述错误。此外,我们的数据库是 Azure SQL.
这是我的代码部分。仅发布必要的代码:
var iothub = require('azure-iothub');
var connectionString = '<Our connection string here>';
var registry = iothub.Registry.fromConnectionString(connectionString);
...
const device = {
deviceId: registry.deviceId,
devStatus: registry.status,
connStatus: registry.connectionState
}
registry.create(device, function(err, deviceInfo, res) {
if (err) {
registry.get(device.deviceId, printDeviceInfo);
console.log(device.deviceId);
}
if (deviceInfo.deviceId) {
printDeviceInfo(err, deviceInfo.deviceId, res)
}
});
function printDeviceInfo(err, deviceInfo, res) {
if (deviceInfo) {
console.log('Device ID: ' + deviceInfo.deviceId);
console.log('Connection state: ' + deviceInfo.connStatus)
}
}
这是设备的数据库模型:
module.exports = (sequelize, Sequelize) => {
const Device = sequelize.define('devices', {
deviceId: {
type: Sequelize.STRING,
required: true
},
devStatus: {
type: Sequelize.BOOLEAN,
allowNull: false,
defaultValue: true
},
});
return Device;
}
不确定可以提供多少帮助,但我们将不胜感激。网上关于此错误的信息不多(Google 中有两页,但都与我的具体问题不相似)..
如果您看到 source code of IOT hub SDKs,您会发现 如果第一个参数不包含 deviceId 属性[=,则创建方法将抛出 ArgumentError
25=]:
因此,您的 deviceId
属性 未填充。 create(DeviceDescription, HttpResponseCallback) creates a new device identity on an IoT hub. You will have to provide a value to it. Registry does not provide those properties you have used in your code. Refer this sample for proper usage of registry.create
. And, I would recommend you to read Understand the identity registry in your IoT hub.
如果您还有其他问题,请告诉我。