IBM Worklight JSONStore | Удалить документ из коллекции и стереть его из памяти
Я пытался стереть весь документ из коллекции и памяти перед добавлением нового. Я попробовал это следующими способами
1.
WL.JSONStore.get("users").findAll().then(function (arrayResults){
var options={push:true};
if(arrayResults.length>0){
for(var i=1;i<=arrayResults.length;i++){
WL.JSONStore.get("users").remove(i,options);
}
}
});
2.
WL.JSONStore.get("users").findAll().then(function (arrayResults){
var options={};
if(arrayResults.length>0){
for(var i=1;i<=arrayResults.length;i++){
WL.JSONStore.get("users").erase(i,options);
}
}
});
Но не добился успеха. Это показывает все документы, делая findAll
1 ответ
Решение
Вы можете использовать вызов API removeCollection, чтобы удалить все документы в коллекции, вам придется повторно инициировать коллекцию, если вы хотите использовать ее снова.
Или попробуйте следующий пример:
function wlCommonInit () {
WL.JSONStore.init({
users: {
name: 'string'
}
})
.then(function () {
return WL.JSONStore.get('users').add([{name: 'hello'}, {name: 'world'}]);
})
.then(function () {
return WL.JSONStore.get('users').findAll();
})
.then(function (res){
alert('Before - Docs inside:' + JSON.stringify(res));
var ids = res.map(function(current){ return current._id })
var promises = [];
while (ids.length) {
promises.push(WL.JSONStore.get('users').remove(ids.pop()));
}
return WLJQ.when.apply(null, promises);
})
.then(function () {
return WL.JSONStore.get('users').findAll();
})
.then(function (res) {
alert('After - Docs inside:' + JSON.stringify(res));
})
.fail(function (err) {
alert('Failed:' + err.toString());
});
}