orm - Cómo dar una restricción única en el modelo lucid, estoy usando lucid en adonis con typescript
En adonis.js estoy tratando de añadir una restricción única al campo de correo electrónico, tal como lo hacemos en sequelize, prismajs o cualquier otro ORM. ¿Es posible añadirlo en adonis?
import { DateTime } from 'luxon'
import { BaseModel, column, computed, HasMany, hasMany } from '@ioc:Adonis/Lucid/Orm'
import Post from 'App/Models/Post'
export default class User extends BaseModel {
@column({ isPrimary: true })
public id: number
@column()
public firstName: string
@column()
public lastName: string
@column()
public email: string
@column({ serializeAs: null })
public password: string
@column.dateTime({ autoCreate: true })
public createdAt: DateTime
@column.dateTime({ autoCreate: true, autoUpdate: true })
public updatedAt: DateTime
@computed()
public get fullName() {
return `${this.firstName} ${this.lastName}`
}
@hasMany(() => Post, {
foreignKey: 'userId',
})
public posts: HasMany<typeof Post>
}
Respuesta #1
Estoy asumiendo que querrías validar si la dirección de correo electrónico es única antes de crear el usuario en la base de datos. En ese caso, puedes usar la validación de unicidad para asegurarte de que el correo electrónico ingresado por el usuario no exista en la base de datos.
import { schema, rules } from '@ioc:Adonis/Core/Validator'
{
email: schema.string({}, [
rules.unique({ table: 'users', column: 'email' })
])
}
Puedes aprender más sobre Validator y la Validación de Reglas Únicas en la documentación oficial de Adonis.
