Cloudant 更改通知
Posted
技术标签:
【中文标题】Cloudant 更改通知【英文标题】:Cloudant change notifications 【发布时间】:2015-09-12 14:02:34 【问题描述】:我是 Cloudant 新手,但发现它对 IoT 数据的第一阶段很有用。但是我需要根据与 _id 分开的 id 字段订阅更改,并且对于发送数据的传感器来说是唯一的。到目前为止我看到的例子对这个问题没有帮助。我现在正在做的是为每个帖子发送一个单独的 json 文档,所以它应该返回带有这个传感器 ID 的新文档。 json 文档有时会在第二个出现,但也可能是几个小时。
我在 .Net 网络应用程序中使用 c#。下面的代码创建对 Cloudant 数据库的调用,并根据为字段 SensorID 创建的索引返回我想要的数据,
json =
"selector":
"SensorID" : "h7365cf3-17bc-4422-b436-f7bcf12b2e2a"
,
"fields": [
"Data"
]
url = My Cloudant url + ” /_find”.
这将返回所有带有与 json 查询中 SensorID 值对应的 sensorID 字段的文档,但仅返回嵌套在 Data 字段中的每个文档的 json 对象。
using (WebClient client = new WebClient())
byte[] postBytes = System.Text.ASCIIEncoding.UTF8.GetBytes(json.ToString());
client.UseDefaultCredentials = true;
client.Credentials = new NetworkCredential(username, password);
client.Headers[HttpRequestHeader.ContentType] = "application/json";
var response = client.UploadData(url, "POST", postBytes);
JObject iJson = JObject.Parse(client.Encoding.GetString(response));
return parseIncoming(iJson);
当调用 My Cloudant url +“GET /_DB_UPDATES”时,它返回有关整个数据库更改的信息。这可以设置为连续馈送。
我希望这意味着我可以订阅文档中的更改以获取新数据,例如 Redis Pub/Sub。我开始认为情况可能并非如此,但如果有人能告诉我如何做到这一点,我将不胜感激。
【问题讨论】:
嗨,Dan,您需要在此处发布一些代码,以便有人可以提供帮助。 请查看 _changes 查询。当您使用“feed=continuous”时,它可能会对您有所帮助。详情看这里docs.cloudant.com/database.html#get-changes @AlexdaSilva 的评论很有帮助。在查看他们的评论后,我实际上能够找到关于更改提要的最新文档,这里是cloud.ibm.com/docs/… 【参考方案1】:正如@adasilva70 所说,您需要使用_changes 提要。
您可以使用适当的过滤器功能过滤更改(以便仅显示您感兴趣的文档的更改)。
您可以获得自给定序列点以来的所有更新(自您获得最后一个数据以来的所有更新)和/或您可以使用长轮询或连续模式来获得即时通知。
【讨论】:
以上是关于Cloudant 更改通知的主要内容,如果未能解决你的问题,请参考以下文章
如何在另一个更改通知程序类提供程序中使用来自一个更改通知程序类的方法