推送包含文档和文件的集合时出现 JSONStore 错误

2024-01-09

我有一个用于客户列表的 JSONStore,用户可以使用该应用程序向这些客户添加文档。

客户列表及其数据(以及附加文档)必须与后端同步。

当我将 774KB 的 ppt 文档(即二进制大小,我将其转换为 base64)添加到 json 存储并执行 push() 时,它失败并出现错误:

E/CursorWindow(32705): need to grow: mSize = 1048576, size = 1056310, freeSpace() = 1048464, numRows = 1
E/CursorWindow(32705): Attempting to grow window beyond max size (1048576)
E/Cursor(32705): Failed allocating 1056310 bytes for text/blob at 0,1
D/Cursor(32705): finish_program_and_get_row_count row 0
E/CursorWindow(32705): need to grow: mSize = 1048576, size = 1056310, freeSpace() = 1048464, numRows = 1
E/CursorWindow(32705): Attempting to grow window beyond max size (1048576)
E/Cursor(32705): Failed allocating 1056310 bytes for text/blob at 0,1
D/Cursor(32705): finish_program_and_get_row_count row 0
E/CursorWindow(32705): Bad request for field slot 0,0. numRows = 0, numColumns = 4
E/jsonstore-core(32705): error while dispatching action "allDirty"
E/jsonstore-core(32705): java.lang.IllegalStateException: get field slot from row 0 col 0 failed
E/jsonstore-core(32705):    at net.sqlcipher.CursorWindow.getLong_native(Native Method)
E/jsonstore-core(32705):    at net.sqlcipher.CursorWindow.getLong(CursorWindow.java:381)
E/jsonstore-core(32705):    at net.sqlcipher.AbstractWindowedCursor.getLong(AbstractWindowedCursor.java:110)
E/jsonstore-core(32705):    at net.sqlcipher.AbstractCursor.moveToPosition(AbstractCursor.java:195)
E/jsonstore-core(32705):    at net.sqlcipher.AbstractCursor.moveToNext(AbstractCursor.java:257)
E/jsonstore-core(32705):    at android.database.CursorWrapper.moveToNext(CursorWrapper.java:166)
E/jsonstore-core(32705):    at com.worklight.androidgap.plugin.storage.AllDirtyActionDispatcher$AllDirtyAction.performAction(AllDirtyActionDispatcher.java:148)
E/jsonstore-core(32705):    at com.worklight.androidgap.plugin.storage.AllDirtyActionDispatcher$AllDirtyAction.performAction(AllDirtyActionDispatcher.java:119)
E/jsonstore-core(32705):    at com.worklight.androidgap.plugin.storage.DatabaseActionDispatcher$Context.performReadableDatabaseAction(DatabaseActionDispatcher.java:141)
E/jsonstore-core(32705):    at com.worklight.androidgap.plugin.storage.AllDirtyActionDispatcher.dispatch(AllDirtyActionDispatcher.java:64)
E/jsonstore-core(32705):    at com.worklight.androidgap.plugin.storage.DatabaseActionDispatcher.dispatch(DatabaseActionDispatcher.java:56)
E/jsonstore-core(32705):    at com.worklight.androidgap.plugin.storage.BaseActionDispatcher.dispatch(BaseActionDispatcher.java:87)
E/jsonstore-core(32705):    at com.worklight.androidgap.plugin.storage.DispatchingPlugin$ActionDispatcherRunnable.run(DispatchingPlugin.java:113)
E/jsonstore-core(32705):    at com.worklight.androidgap.plugin.storage.DispatchingPlugin$SerialExecutor$1.run(DispatchingPlugin.java:147)
E/jsonstore-core(32705):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
E/jsonstore-core(32705):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
E/jsonstore-core(32705):    at java.lang.Thread.run(Thread.java:856)
E/myApp (32705): [wl.jsonstore] {"src":"push","err":8,"msg":"FAILED_TO_GET_UNPUSHED_DOCUMENTS_FROM_DB","col":"Documentos","usr":"jsonstore","doc":{},"res":{}}

我可以添加文档,错误是执行push()方法。

我在 stackoverflow 和 infocenter 中看到的有关 JSONStore 的所有信息都是没有大小限制。我的手机中有足够的可用空间。

任何想法?

谢谢。


“不要将 blob 存储在数据库中。将标识符存储在数据库中,并将 blob 作为文件放入存储中。” - Source https://stackoverflow.com/a/6944637/186909

科尔多瓦有一个File API http://docs.phonegap.com/en/2.6.0/cordova_file_file.md.html#File您可以使用。

这是一个简单的例子:

//Code to write customer-1-file1.ppt and customer-1-file2.ppt to disk.
//See Cordova's File API.

//Pseudocode to get the blobsCollection and add metadata to be able to find the files.
//This would be inside the success callback for writing the files.
WL.JSONStore.get('blobsCollection')
  .add([{fileName: 'customer-1-file1.ppt'}, {fileName: 'customer-1-file2.ppt'}]);

//Some time has passed...

//Pseudocode to get %customer-1% from disk
//% are wildcards characters and match any string
WL.JSONStore.get('blobsCollection')
  .find({fileName: 'customer-1'}, {exact: false})
  .then(function (listOfFiles) {
    //listOfFiles => [{_id: 1, json: { fileName: 'customer-1-file1.ppt'} }, 
    //                {_id: 2, json: { {fileName: 'customer-1-file2.ppt'} }]

    var firstFile = listOfFiles[0].json.fileName;

    //Code to read firstFile. See Cordova's File API.
  });

JSONStore 由 SQLite 支持(嗯,从技术上来说SQL密码 http://sqlcipher.net/它是 SQLite 的包装器,添加了数据加密)。读SQLite 中的内部 BLOB 与外部 BLOB http://www.sqlite.org/intern-v-extern-blob.html。要点是“对于小于 100KB 的 BLOB,当 BLOB 直接存储在数据库文件中时,读取速度会更快。对于BLOB 大于 100KB,从单独文件读取速度更快".

如果您需要存储大于默认 SQLite 游标大小(1048576 字节)的 blob,我建议.

我会确保文档中提到这一点。

请注意,有一个获取推送所需信息 http://pic.dhe.ibm.com/infocenter/wrklight/v6r0m0/topic/com.ibm.worklight.help.doc/devref/c_jsonstore_getpushrequired.html您可以使用 API 来获取文档列表pushAPI 将尝试发送到 Worklight 适配器。您需要使用以下命令自行将文件更改发送到 Worklight AdapterWL.Client.invokeProcedure,或者使用类似的方法直接连接到后端jQuery.ajax.

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

推送包含文档和文件的集合时出现 JSONStore 错误 的相关文章

随机推荐

  • C++ boost 库 - 写入 ini 文件而不覆盖?

    我正在尝试使用 boost 库的 ini 解析器和属性树编写 ini 文件 该文件是分阶段写入的 我的意思是每个函数都会写入其中的一部分 最后 我只留下最后的输出 而不是写下所有内容 我在编写时使用的示例代码 property tree p
  • selenium.open() 在迭代测试中变得无响应

    我有一组必须使用不同参数执行的测试步骤 我已在 Eclipse TestNG 中编写了此脚本 由 Excel 工作表提供的参数驱动 现在 测试步骤包括设置页面的属性 然后打开另一个页面以确认该属性已设置 所以 实际上 我使用了一个简单的se
  • Spark,如何打印查询?

    我正在使用 pyspark df self sqlContext read option es resource indexes format org elasticsearch spark sql load df df filter df
  • 如何用Java管理Linux文件权限?

    是否有任何机制来获取和设置文件 目录权限 比如我想以shell的方式显示一个文件的权限 rwxr xr 使用 Java 可以做到这一点吗 我知道里面有一些方法File类来知道文件是否canExecute canRead and canWri
  • Apple-app-site-association 文件无法下载

    我已将我的 apple app site association 文件上传到我的 HTTPS Web 服务器的根目录之后 我已在 xcode 中添加了我的关联域 我已遵循 Apple 通用链接教程 SWC 拒绝重定向到 https exam
  • 为什么网格模板区域中缺少的网格区域名称会创建额外的轨道?

    我创建了一个简单的 CSS 网格 我决定不指定grid template grid template columns grid template rows特性 相反 我开始于grid template areas 并分配地区名称 to th
  • 推特引导程序中缩小尺寸?

    当 在我的浏览器中 我缩小两次 ctrl ctrl 而不是默认的 使用 ctrl 0 查看时 我喜欢使用 twitter bootstrap 的所有项目的大小 缩放会影响字体大小 响应式设计以及我想使用 bootstrap 的其他十几个重要
  • 如何允许 UWP ListView 滚动到最后一项?

    我有一个 ListView 其中包含一堆大小不规则的项目 当您滚动 ListView 时 最后一项的底部将最终位于控件的底部 您无法继续滚动 如果最后一项小于控件 我想要top最后一个项目能够滚动到控件的顶部 如果该项目比控件大 我对默认行
  • Rails 3.2.6 和通过迁移创建数据库视图

    我使用的是 Rails 3 2 6 我需要创建一个数据库 VIEW 像往常一样 我创建了一个迁移 并尝试使用执行方法来实现目标 不幸的是 迁移生成的是表 而不是视图 为什么 提前谢谢了 毛罗 UPDATE 我想要如下的东西 class Cr
  • C# 中 Delphi“shl”的等价物是什么?

    我正在基于 Delphi 转换代码 用 C 制作一个应用程序 但我发现了一个我不认识的命令 shl 我想知道是否有与 C 等效的命令 提前致谢 Shl is 左移 http www delphibasics co uk RTL asp Na
  • 如何静态检测缺失的 @Override 注释?

    在 Java 5 和 Java 6 之间 有关的规则 Override源自接口 而不是超类 的方法的注释已更改 在不允许之前 但在允许之后 然而 他们并不是required通过javac 某些 IDE 例如 eclipse 可能会针对此类缺
  • 为什么 constexpr 不是所有函数的默认值? [复制]

    这个问题在这里已经有答案了 在放宽 constexpr 的规则后 这些函数似乎可以在任何地方使用 它们也可以在常量 constexpr 和局部 可变 变量上调用 所以对我来说 这似乎只是编译器的提示 如内联 我只是继续在各处编写它 如果编译
  • ASP.NET Core 应用程序的解决方案资源管理器中的文件嵌套

    当我创建 ASP NET Core 2 0 Razor Page 模板项目时 每个 cshtml 及其 cs 文件都被拆分 我不知道为什么 几分钟前它工作正常 但我不记得我做了什么 也许是 SDK 或 Visual Studio 的设置 我
  • 语法:自上而下和自下而上的区别?

    自上而下和自下而上语法有什么区别 举个例子就太好了 首先 语法本身不是自上而下或自下而上的 parser是 尽管有些语法可以被一种语法解析 但不能被另一种语法解析 从实践的角度来看 主要区别在于大多数手写解析器是自上而下的 而更大比例的机器
  • 查找资源字典时出现设计时错误 - 项目之间不一致

    TLDR 新引用外部的屏幕ResourceDictionary在运行时可以正确地以 VS2015 样式编写文件 但在设计时则不然 是什么赋予了 在工作中 我们有一个 WinForms 产品 其中包含manyWinForms 屏幕上有一位开发
  • std::shared_ptr 向上转换为基类 - 最好的方法?

    哪种转换更好 有什么区别 class Base class Derived public Base public std enable shared from this
  • 如何解决 Spark 上的纱线容器尺寸问题?

    我想启动一些 pyspark 作业YARN 我有 2 个节点 每个节点 10 GB 我可以像这样打开 pyspark shell pyspark 现在 当我有一个非常简单的示例时 我尝试启动 import random NUM SAMPLE
  • 如何避免ie8兼容按钮?

    在IE8中 微软引入了一种称为兼容模式的新模式 它可以像IE7一样呈现页面 您可以在 stackoverflow com 中的地址栏旁边看到此按钮 但是当您访问google com live com时 您将看不到兼容模式按钮 我们如何确保页
  • 使用 HttpUrlConnection 访问 Tomcat 时为 404,从浏览器访问时为 200

    我遇到了最奇怪的 Tomcat 错误 我有一个使用 tomcat 在本地主机的端口 8080 上运行的 Web 应用程序 一切似乎都运行良好 没有错误等 但是 当我尝试使用 HttpURLConnection 类从另一个应用程序访问此 We
  • 推送包含文档和文件的集合时出现 JSONStore 错误

    我有一个用于客户列表的 JSONStore 用户可以使用该应用程序向这些客户添加文档 客户列表及其数据 以及附加文档 必须与后端同步 当我将 774KB 的 ppt 文档 即二进制大小 我将其转换为 base64 添加到 json 存储并执