Сбой Realm при создании объекта (React Native)

#android #react-native #realm

#Android #react-native #realm

Вопрос:

Это мой файл RealmService:

 import Realm from 'realm';

const AuthSchema = {
    name: 'Auth',
    primaryKey: 'id',
    properties: {
        id: {
            type: 'int',
            indexed: true
        },
        time: 'date',
        username: 'string',
        action: 'string'
    }
}

const WiretransferSchema = {
    name: 'Wiretransfer',
    primaryKey: 'id',
    properties: {
        id: {
            type: 'int',
            indexed: true
        },
        time: 'date',
        source: 'string',
        target: 'string',
        amount: 'float',
        comments: {
            type: 'string',
            optional: true
        }
    }
}

let RealmService = {
    findAllAuth: function() {
        return repository.objects('Auth');
    },

    SaveAuth: function(username, action) {
        Realm.open({
            path: 'testtt.realm',
            schema: [AuthSchema, WiretransferSchema]
        }).then(realm => {

            // Get max ID
            var maxId = realm.objects('Auth').max('id');

            realm.write(() => {
                realm.create('Auth', {
                    id: maxId   1,
                    time: Date.now(),
                    username: username,
                    action: action
                }, true);
            });

            realm.close();  
        }).catch(err => {
            console.log(err);
        });
    }
}

module.exports = RealmService;
  

Приложение вылетает без каких-либо ошибок при вызове этого кода:

 realm.write(() => {
                realm.create('Auth', {
                    id: maxId   1,
                    time: Date.now(),
                    username: username,
                    action: action
                }, true);
            });
  

Просто метод write не приводит к сбою приложения. Это метод create.

Если я отключу инструменты отладки в React Native, приложение не вылетит, но в файл realm ничего не добавлено.

Я пробовал RN 0.57.1 и 0.57.8. Переустановил realm и все еще безуспешно. В чем может быть проблема?

Комментарии:

1. убедитесь, что типы данных и объекты, которые вы передаете, совпадают. Я получил такой же сбой, когда мой тип данных был int, и я дал ему строку.

2. новая дата () вместо Date.now() исправлена. Однако почему я не получаю ошибок? Это просто приводит к сбою приложения без какой-либо полезной информации.

3. Я рад, что помог вам. Публикуем ответ ниже, чтобы, если кто-либо другой столкнется с этой проблемой, мог легко найти ответ. Прошу вас принять ответ 🙂

Ответ №1:

Убедитесь, что типы данных и объекты, которые вы передаете, совпадают. Я получил такой же сбой, когда мой тип данных был int, и я дал ему строку.

В вашем случае передача new Date() будет работать.

Это не выдаст никаких ошибок, но приложение выйдет из строя как на Android, так и на iOS. Возможно, команда realm решит это в будущей версии, поскольку эта ошибка уже существует на форуме Github.