删除JSONStore集合中的所有文档(不使用removeCollection())

时间:2014-04-08 10:13:36

标签: ibm-mobilefirst jsonstore

我正在研究IBM Worklight并对JSONStore有疑问。如何编写一个函数来删除JSONStore集合中的所有文档,保留集合的引用?

换句话说,我想在不删除集合的情况下删除文档。我不能在我的应用程序中使用removeCollection(),因为我无法退出应用程序并再次调用wlCommonInit()(在JSONStore上调用get和init)。

非常感谢你的帮助 安德烈

2 个答案:

答案 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 ...