Couchbase Lite 2 + JsonConvert

2023-12-23

以下代码示例将一个简单的对象写入 couchbase lite(版本 2)数据库,然后读取所有对象。这个你可以在官方文档中找到here https://developer.couchbase.com/documentation/mobile/2.0/couchbase-lite/csharp.html

这是相当多的手动输入,因为每个对象的每个属性都必须传输到MutableObject.

class Program
{
    static void Main(string[] args)
    {
        Couchbase.Lite.Support.NetDesktop.Activate();

        const string DbName = "MyDb";
        var db = new Database(DbName);

        var item = new Item { Name = "test", Value = 5 };

        // Serialization HERE
        var doc = new MutableDocument();
        doc.SetString("Name", item.Name);
        doc.SetInt("Value", item.Value);
        db.Save(doc);

        using (var qry = QueryBuilder.Select(SelectResult.All())
                                     .From(DataSource.Database(db)))
        {
            foreach (var result in qry.Execute())
            {
                var resultItem = new Item
                {
                    // Deserialization HERE
                    Name = result[DbName].Dictionary.GetString("Name"),
                    Value = result[DbName].Dictionary.GetInt("Value")
                };

                Console.WriteLine(resultItem.Name);
            }
        }

        Console.ReadKey();
    }

    class Item
    {
        public string Name { get; set; }
        public int Value { get; set; }
    }
}

根据我的研究,Couchbase lite 在内部使用 JsonConvert,因此可能有一种方法可以在 JsonConvert 的帮助下简化这一切。

任何类似的东西:

var json = JsonConvert.SerializeObject(item);
var doc = new MutableDocument(json); // No overload to provide raw JSON

or maybe

var data = JsonConvert.SerializeToDict(item); // JsonConvert does not provide this
var doc = new MutableDocument(data);

是否存在某种优化,并且首选方法是故意的?


人们经常问这个问题,但 Couchbase Lite 实际上并不在数据库中存储 JSON 字符串。它们以不同的格式存储,因此这不会带来您想象的好处(JSON 需要重新解析,然后分解为其他格式)。我一直在推动一种直接序列化类的方法,而不是通过字典对象(这似乎是这里的最终目标),但我们的首要任务是企业客户想要的东西,而这似乎不是其中之一。请注意,要使其加入,需要使用 C# Java 和 Objective-C / Swift 来实现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Couchbase Lite 2 + JsonConvert 的相关文章

随机推荐

  • 学习组装时不知所措。请指导

    最近 我决定学习汇编将是一个好主意 但现在 我真的被我在论坛 这里 教程等中读到的所有关于汇编的材料淹没了 其中一些真的很旧 所以我很乐意对汇编语言有一些了解 如何 编译 等 我也希望它能够在我的CPU上运行 以便我可以练习 这是我来自CP
  • 使用 Windows 身份验证时向身份添加自定义声明

    我很难理解在 Net MVC 应用程序中使用 Windows 身份验证时如何添加自定义声明 这里的挑战是在登录时使用数据库中的自定义声明填充用户的身份 以避免每次我想检查自定义授权属性时都进行数据库调用 但使用 Windows 身份验证使事
  • 检查参数是否是Python模块?

    我如何 Python方式 检查参数是否是Python模块 没有像模块或包这样的类型 gt gt gt os
  • 如何更改 Apache 的默认目录和索引文件(通过 XAMPP 安装)[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 如何更改 Apache 的默认目录和索引文件 通过 XAMPP 安装 而不是寻找htdocs and index 它寻找myPath and myFi
  • 在 Windows XP 中搜索 unicode 文本

    有没有办法在 Windows XP 下搜索文本文件中的 unicode 字符 例如 假设我希望查找带有欧元符号的文本文档 虽然标准 XP 搜索允许我搜索欧元符号 但当我知道它们至少应该有几个时 它不会产生任何匹配项 Wingrep 也有同样
  • 无法为使用 PEP 517 且无法直接安装的 _ 制造轮子 - Easy Solution

    我正在尝试安装一个使用 PEP 517 的软件包 由于涉及 517 的 Wheel 构建的错误 最新版本的 Pip 不允许我安装 过去 我通过降级 Pip 安装软件包并将 Pip 升级回最新版本来解决此问题 但是 在我的 virtualen
  • spring maven profile - 根据编译配置文件设置属性文件

    我会创建一些像这样的编译配置文件 个人资料名称 dev 配置文件名称 测试 配置文件名称 生产 在 src main resources 中我有 3 个文件夹 开发 文件 属性 测试 文件 属性 生产 文件 properties 每个文件包
  • - 讨论' aria-label='CSS 和 - 讨论'> CSS 和 - 讨论

    我想更改用于在网站上上传文件的输入和浏览按钮的样式 并且一直在阅读这实际上是不可能做到的 显然有一些黑客可能有效 未经测试 但在我浪费时间之前 我想知道为什么专业网站似乎没有问题 当我说专业时 我指的是可以上传简历的求职网站 可以上传脚本的
  • 如何在不使用 !important 或 javascript 的情况下覆盖内联 CSS?

    有没有办法在不使用的情况下覆盖内联CSS important并且不使用 JavaScript 例如 div style background color red div 我想知道是否可以在没有以下内容的情况下覆盖它 div backgrou
  • 如何使用 Databricks 将 CSV 写回 Azure Blob 存储?

    我正在努力写回 Azure Blob 存储容器 我可以使用以下内容从容器中读取内容 storage account name expstorage storage account key 1VP89J container source sp
  • Angular js 不起作用

    这是我的 html 文件 angular js 文件位于 java main webapp js 文件夹下 当我点击它时 Intellij 可以看到它 但代码不起作用 我在屏幕上打印出 helloMessage 而不是 hello worl
  • 当前上下文中不存在 MVC Razor 帮助程序

    我在 MVC4 Web 应用程序中创建了一个自定义剃刀助手 我需要在所有视图中使用它 在我的所有视图页面中 我似乎无法使用我的自定义助手 VS2012不只是看到它 请问我该如何解决这个问题 EDIT 当我运行页面时它确实有效 只是VS看不到
  • pytesseract 和 image.tif 文件

    我需要使用 pytesseract 将包含多个页面的 image tif 转录为文本 我有下一个代码 gt From PIL import Image gt Import pytesseract gt Pytesseract pytesse
  • 检测给定文件是否是图像以及java中特定类型的有效图像

    我需要从用户输入文件中获取该文件应该只是指定类型的图像 例如 仅有的JPEGs 其他文件必须被拒绝 所以我对文件实施了简单的基本检查 fileName toLowerCase endsWith jpg fileName toLowerCas
  • 对数据框列进行排序/对齐,以便行字符串值与主列表列匹配,如果列中不匹配则打印 0

    我想根据第一列 MASTER 中的字符串主列表对数据帧 3106 行 x 24 列 进行排序 以便数据帧的每一行中的字符串在存在匹配且存在时对齐不匹配则为该单元格打印 0 主列表包含任何列中的每个可能的字符串 但并非每个字符串都会出现在每列
  • 从表格上清除物体,何时何地?

    我有一个简单的 Windows 窗体应用程序 在表单上 我有一个自定义类 它有自己的 Dispose 方法 所以问题是我什么时候应该调用这个 FormClosed 事件 即 Form1 FormClosed 是否是执行此操作的正确位置 或者
  • .NET 的 StringBuilder 是线程安全的吗

    MSDN 文档的常规 线程安全 部分StringBuilder指出 不保证任何实例成员都是线程安全的 但这个语句感觉就像是为框架中的几乎每个类复制并粘贴了 http msdn microsoft com en us library syst
  • CombinedDomainXYPlot 不重新缩放域轴

    当我从使用 CombinedDomainXYPlot 的图表中隐藏系列数时 所有范围轴都会很好地自动重新缩放 但是 域轴不会重新缩放 有没有办法手动刷新缩放 或者我可能缺少一个设置来启用此设置中域轴的自动缩放 CombinedDomainX
  • JAX-RS和自定义授权

    我正在尝试保护 JAX RS 端点 目前正在尝试弄清楚身份验证和授权是如何工作的 大多数示例都非常简单 因为它们仅通过 web xml 搭载 Java EE 应用服务器角色 我想知道如何使用 Java EE AS 角色之外的其他角色 例如
  • Couchbase Lite 2 + JsonConvert

    以下代码示例将一个简单的对象写入 couchbase lite 版本 2 数据库 然后读取所有对象 这个你可以在官方文档中找到here https developer couchbase com documentation mobile 2