2017-01-06 5 views
3

Я занимаюсь разработкой приложений с использованием реагировать родной, где мне нужно, чтобы удалить определенные объекты, которые дают мне фильтрованной метод, но он дал мне ошибку под названиемRealm: удалить конкретный объект

«Можно удалять только объекты в пределах транзакции.»

Вот мой код

allObj1 = { 
       id : 1, 
       speed : "1", 
       accuracy: "100", 
       bearing: "1", 
       longitude: "192", 
       altitude: "1111", 
       latitude: "1111", 
       time: "11111", 
       locationProvider: "2222", 
      }; 

     allObj2 = { 
       id : 2, 
       speed : "1", 
       accuracy: "100", 
       bearing: "1", 
       longitude: "192", 
       altitude: "1111", 
       latitude: "1111", 
       time: "22222", 
       locationProvider: "2222", 
      }; 

     allObj3 = { 
       id : 3, 
       speed : "1", 
       accuracy: "100", 
       bearing: "1", 
       longitude: "192", 
       altitude: "1111", 
       latitude: "1111", 
       time: "333333", 
       locationProvider: "2222", 
      }; 

     realm.write(() => { 
      realm.create('Location',allObj1);   
      //realm.delete(firstObj); 
      realm.create('Location',allObj2); 
      realm.create('Location',allObj3); 
     });   

     let locationO = realm.objects('Location'); 
     //let tanlocation = locationO.filtered('id >1 AND id <3 '); 
     // Observe Collection Notifications   

     realm.objects('Location').filtered('id >=1 AND id <=3').addListener((tanlocation, changes) => { 

      try{ 
       tanlocation.forEach((realmObj,index) => {       
        realm.delete(realmObj);    
       }); 
      } 
      catch(err){ 
       console.log(err); 
      } 
     }); 


     // Unregister all listeners 
     realm.removeAllListeners(); 

     //realm.delete(tanlocation); 
     //console.log(tanlocation); 

     console.log(locationO); 

Это бросить мне ошибку под названием «Можно удалять только объекты в пределах транзакции.»

Кто-нибудь сталкивался с такой проблемой? кто-нибудь знает, как установить этот или альтернативный метод для достижения указанной функциональности

ответ

1

Обязательно оберните удаление в realm.write, как и с realm.create.

realm.write(() => { 
    realm.delete(realmObj) 
}) 

Это сработало для меня, когда я столкнулся с этой проблемой. Только реализовано, как только я это прочитал Github comment

+0

Да, правильная операция удаления и обновления работает с методом write(). –

Смежные вопросы