我正在研究IBM Worklight并对JSONStore有疑问。如何编写一个函数来删除JSONStore集合中的所有文档,保留集合的引用?
换句话说,我想在不删除集合的情况下删除文档。我不能在我的应用程序中使用removeCollection(),因为我无法退出应用程序并再次调用wlCommonInit()(在JSONStore上调用get和init)。
非常感谢你的帮助 安德烈
答案 0 :(得分:1)
目前没有API可以轻松实现这一目标。您的选择是:
1.Call删除集合,然后初始化您要清除和重复使用的特定集合。无需再次致电wlCommonInit
。一些伪代码:
var collections = {
people : {...},
orders: {...},
greetings: {...}
};
var options = {...};
WL.JSONStore.get('greetings').removeCollection()
.then(function () {
return WL.JSONStore.init({greetings: collections.greetings}, options);
})
.then(function () {
//re-use the collection here
});
2.使用find
API查找文档,使用remove
API删除它们。有example here。
您可以打开功能请求here。
答案 1 :(得分:0)
假设访问是您的集合的访问者,您可以这样做:
access.findAll()
.then(function(result){
if(result.length>0)
{
access.remove(result,{push:false})
}
})
.fail(function(error_msg){
alert(error_msg);
});
但请记住,这不会重置id(愚蠢的jsonstore!),因此每次执行此操作时,它们都会按集合的长度移动。
P.S。:根据我的经验,由于在低性能移动设备上启动加密集合所花费的时间,因此在加密集合时应避免使用removeCollection API ...