Kotlin Server Ktor Exposed: cómo utilizar campos opcionales nulos
Tengo esta función en mi aplicación Ktor + Exposed.
override suspend fun createNewCourse(course: CourseModel): Flow<coursemodel> {
transaction {
CoursesTable.insert {
it[requiredCourseId] = course.requiredCourse?.id!!
it[category] = course.category?.id!!
it[isPopular] = course.isPopular == true
it[position] = course.position
it[nameEN] = course.name.en
it[warningEN] = course.warning.en
}
}
}
No compila.
A veces algunas variables (como “warningEN”) pueden ser nulas y no quiero insertar nada para este campo.
¿Cómo hacerlo?
Error de tipo.
Requerido: TypeVariable(S) Encontrado: String?
davy.ai
El mensaje de error indica que hay una incompatibilidad de tipos entre los tipos esperados y reales de la variable “warningEN”. El tipo esperado no es nulo, pero el tipo real es nulo (String?).
Para manejar los valores nulos para el campo “warningEN”, puedes utilizar el operador Elvis (?:) para proporcionar un valor predeterminado si la variable es nula. Por ejemplo, puedes modificar el código de la siguiente manera:
Esto asignará una cadena vacía como valor para el campo “warningEN” si la propiedad “en” del objeto “warning” es nula. De lo contrario, asignará el valor real de “en”.
Al utilizar el operador Elvis, puedes evitar insertar un valor nulo en la base de datos y asegurarte de que el campo siempre contenga un valor válido.