【发布时间】:2013-05-07 03:16:24
【问题描述】:
我通过 Worklight 运行时找到了Worklight JSONStore has no size limit。 如果您添加到集合并达到移动设备的大小限制,WL JSONStore API 是否会返回错误/错误代码?
【问题讨论】:
我通过 Worklight 运行时找到了Worklight JSONStore has no size limit。 如果您添加到集合并达到移动设备的大小限制,WL JSONStore API 是否会返回错误/错误代码?
【问题讨论】:
是的,您应该会收到一个错误,但它会是一个通用错误,例如 PERSISTENT_STORE_FAILURE (-1)。我建议将此作为常规单元、功能等测试和应用程序 QA 流程的一部分进行测试。如果您发现意外情况,请报告。
最近我回答了一个类似的问题“JSON 离线设备存储可以限制大小吗?”。我将在此处添加我的答案,因为我相信它可能会有所帮助。
虽然此功能未包含在核心 API 中,但实现起来应该相当简单。
JSONStore 有一个enhance method,您可以使用它向 JSONStoreInstance 原型添加函数。里面有一个例子应该会有所帮助。
Cordova 有一个File API
注意:“size:文件的大小,以字节为单位。(长)”
JSONStore 将其数据存储在这里:
[app]/Documents/wljsonstore/jsonstore.sqlite
/data/data/com.[app-name]/databases/wljsonstor/jsonstore.sqlite
我在 StackOverflow 的这些回答中谈到了该文件:
在向 JSONStore 集合添加更多数据之前,使用 Cordova 的 File API 检查 jsonstore.sqlite 的文件大小。
基本上你会做这样的事情:
if(checkFileSize(collection.name+'.sqlite') < LIMIT){
collection.add(...);
}
使用增强,您可以将该逻辑包装到它自己的方法(例如collection.addWithSizeCheck(....))中,该方法检查文件大小并调用collection.add(...)。
请注意,默认用户名是jsonstore,因此是jsonstore.sqlite。如果您将用户名传递给init,它将使用该用户名创建一个新的 .sqlite 文件。
【讨论】: