Как предотвратить множественные начальные транзакции в Realmjs? - PullRequest
0 голосов
/ 18 января 2019

Я создаю функцию для обработки транзакции, затем вызываю ее в нескольких местах. Я получаю сбой, когда другая транзакция еще не завершена, когда я открываю новую транзакцию.

Вот мой код:

const RealmMakeTransaction = async (action) => {
    try {
        realm.GetInstance().beginTransaction();
        let response = await action();
        realm.GetInstance().commitTransaction();

        return response;

    } catch (e) {

        realm.GetInstance().cancelTransaction();
    }
};

1 Ответ

0 голосов
/ 24 января 2019

Вы можете легко проверить, если realm уже находится в транзакции или нет, прежде чем позвонить beginTransaction(), позвонив realm.GetInstance().isInTransaction

Ваш код будет выглядеть так:

const RealmMakeTransaction = async (action) => {

   //use single instance
   let realm = realm.GetInstance();

    try {
        if( realm.isInTransaction)
          realm.cancelTransaction();

        realm.beginTransaction();
        let response = await action();
        realm.commitTransaction();
        return response;

    } catch (e) {

        realm.cancelTransaction();
        realm.close();
    }
};
...