FIWARE Orion Context Broker

问题描述 投票:1回答:1

我正在帮助一个应用程序显示从传感器获取的数据集。这些数据存储在CouchDb数据库中。

是否有办法使用Orion Context Broker在Couch数据库中公开这些数据?

database couchdb fiware fiware-orion
1个回答
0
投票

这里有几种选择,取决于你要求你的架构做什么。您是否希望使用上下文代理来保持当前状态,然后将历史上下文持久化到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数据,并将其作为上下文返回。

一个完整的代码示例相当长,但可以在下面找到 此处

© www.soinside.com 2019 - 2024. All rights reserved.