当前位置: 首页 > 知识库问答 >
问题:

在Azure Functions Cosmos Db Triggers Extensions v4中侦听更改提要时,如何处理不同的文档类型?

松旻
2023-03-14

我有一个容器,我听它的变化。根据我从更改源收到的文档类型,我在为读取密集型应用填充或更新实例化视图容器时会以不同的方式处理每个文档。

在最新的扩展v4.x中,来自变更提要的文档以<code>IReadOnly的形式传递到函数中

传递“dynamic”会引发“无法将< code>System.string”转换为< code>System”的异常。IReadOnly

目前,作为一种变通方法,在我的开发环境中,我为集合中的每个类型创建了一个函数,并根据需要对其进行处理。

这种方法的缺点是它在生产中会很昂贵,因为对于每次更新,都将调用所有函数。吞噬我的函数调用配额。因此,将调用十个函数,而不是单个函数调用,其中9个函数完全不做任何事情,只是检查它们是否必须做任何事情,然后返回。

我的类型都共享一个基类,该基类具有四个属性(id,pk,ttl和标签(这是我用来区分我的类型的判别属性)。但是在 IReadOnly 中将此基本类型用作 T


共有1个答案

衡高寒
2023-03-14

假设使用的序列化器是Newtonsoft,您可以使用类型JObject进行反序列化。从中读取标签并根据标签反序列化为您的不同类之一。

var json = "{\"Label\": \"Example\", \"IsSuccess\": true }";
var jObject = JsonConvert.DeserializeObject<JObject>(json);
var label = (string) jObject.Property("Label");
if (label == "Example")
{
    var example = jObject.ToObject<Example>();
    Console.WriteLine(example.IsSuccess);
}
public class Example
{
    public string Label { get; set; }
    public bool IsSuccess { get; set; }
}
 类似资料:
  • 问题内容: 我有一个我想在其中的文本更改时调用一个函数。 我怎么做? 问题答案: Java跟踪JTextField文本内容变化的适当侦听器是DocumentListener,您必须将其添加到JTextField的文档中:

  • 我按照这个示例代码(https://github . com/Azure/Azure-document db-changeedprocessor-dot net # example)注册一个观察者来处理cosmos db集合中的变更提要。我使用一个实用程序在cosmos db集合中创建新文档(比如在一个for循环中创建400个文档)。我正在使用30秒的FeedPollDelay。但CFP自由党似乎

  • 嗨,我有一个很可能很愚蠢的问题。我刚开始玩弄属性和ChangeListener,但遇到了一个障碍。我知道,如果我创建了一个包含数组列表的对象属性,那么只有当数组列表本身发生变化时,任何ChangeListener才会启动。但是,如果出现以下情况,我希望所有ChangeListener都启动 阵列列表本身会更改 数组列表的长度会更改(即添加或删除元素) 将ArrayList中的元素更改为其他元素 数

  • 在我的代码中,如果用户在ComboBox 2中输入值,它将反映在TextField中,但是如果用户从ComboBox 1的下拉列表中选择,而不更改ComboBox 2中的值,那么TextField中的值将保持不变,它不会更改。我做错了吗? 测试2。txt:1任何帮助都将不胜感激!

  • 本文向大家介绍Android 侦听SharedPreferences更改,包括了Android 侦听SharedPreferences更改的使用技巧和注意事项,需要的朋友参考一下 示例 请注意: 仅当添加或更改值时,侦听器才会触发,设置相同的值将不会调用它; 侦听器需要保存在成员变量中,而不是匿名类,因为registerOnSharedPreferenceChangeListener它使用弱引用进

  • 我不知道如何监听Firestore db中的更改和更新中的项。 其中包括聊天模型、活动和适配器。 一旦值“isseen”更改为“true”,它就应该显示在发件人的电话上。