我正在帮助一个应用程序显示从传感器获取的数据集。这些数据存储在CouchDb数据库中。
是否有办法使用Orion Context Broker在Couch数据库中公开这些数据?
这里有几种选择,取决于你要求你的架构做什么。您是否希望使用上下文代理来保持当前状态,然后将历史上下文持久化到CouchDB,或者您是否希望将存储在Couch-DB中的读数,并使用它们来增强由上下文代理驱动的其他上下文实体的上下文?
如果你遵循标准的 IoT-Device => IoT Agent => Context Broker 架构,你的第一站是查看现有的持久化组件,如 天鹅座 或 德拉科. 很可能其中一个已经能够将数据持久化到Couch-DB中,如果没有,那么正确的想法是在现有组件中添加一个PR来创建一个Couch-DB Sink。
如果这两者都不支持Couch-DB汇,你可以创建一个自定义组件,该组件监听订阅接口并持久化到Couch-DB中。 下面的伪代码对接收到的数据进行迭代,然后调用Couch函数来upset实体。
const couchDB = require('./couchDB-building');
const debug = require('debug')('tutorial:ngsi-v2');
function upsertToCouchDB(building) {
return new Promise((resolve, reject) => {
couchDB
.upsert(building.id, building.name, building.address, building.verified)
.then(() => {
return resolve();
})
.catch(error => {
return reject(error);
});
});
}
function duplicateBuildings(req, res) {
debug('duplicateBuildings');
async function copyEntityData(building) {
await upsertToCouchDB(building);
}
req.body.data.forEach(copyEntityData);
res.status(204).send();
}
module.exports = {
duplicateBuildings
};
然而,如果你想把你的Couch -DB数据作为上下文添加回来,你将需要看一下。注册
你的上下文提供者将需要监听注册端点,并访问你的Couch-DB数据,并将其作为上下文返回。
一个完整的代码示例相当长,但可以在下面找到 此处