Kotlin Kmongo вставить и вернуть вставленный элемент

Я просто попытался сделать чистый фиктивный проект в Котлин, чтобы практиковать, но поскольку Java делает Kotlin так же, как метод вставки. Я бы сказал, что это будет другой способ вставить и вернуть элемент, а не старый способ сделать 2 запроса.

fun insert(book: Book) : Book? { getByEan(book.EAN)?.let { return null } mongo.collection.insertOne(book) return getByEan(book.EAN) } 

Поэтому в этом случае я сделал предварительную проверку, чтобы не делать элементы с одинаковым EAN, а затем, если это удалось, верните вставленный элемент.

Это может быть проще? Может быть, предварительная проверка сделана с индексом или каким-то образом вернуть вставленный элемент без нового запроса?

 fun insert(book: Book) : Book? { getByEan(book.EAN)?.let { return null } return book.apply { mongo.collection.insertOne(book) } } data class Book(val name: String, val EAN: Int, val author: String, val _id: String? = null) 

Добавив поле _id в модель данных после вставки, оно установит значение сгенерированным идентификатором. В этом случае этот фрагмент кода вернет вставленный объект, как я хотел, без запроса на запрос в базу данных.

Intereting Posts
Присвоение не допускается при выражении? Создание родового типа в Котлине Не удается создать приложение Android (с Kotlin) с Gradle: «comand« java.exe »завершен с ненулевым значением выхода 1» Многострочный макет регулярного выражения Почему intairiJ IDEA-область видимости «предоставляется» вместо «компиляции»? Bluetooth-клиент Socket получает одинаковое исключение каждый раз Отключить проверку использования пакета «kotlin» в Gradle Обновления / регенерации синтетического вида Android Studio Kotlin Как получить LifecycleOwner в WearableActivity? Ошибка внутреннего компилятора Android Studio kaptDebugKoltin В реактивном программировании Android, как разбить потоковые данные объекта после применения фильтра? Использование функциональных интерфейсов с функциями функций в Котлине Ошибка приложения из-за того, что экземпляр экземпляра lateinit не инициализирован несоответствие типов в котлине Альтернатива вложенного интерфейса в Котлине