#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.