orm - Hur man ger en unik begränsning i Lucid-modellen, jag använder Lucid i Adonis med TypeScript
I Adonis.js försöker jag lägga till en unik begränsning på e-postfältet precis som vi gör i Sequelize, PrismaJS eller någon annan ORM. Är det möjligt att lägga till i 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>
}
Svar #1
Jag antar att du vill validera om e-postadressen är unik innan du skapar användaren i databasen. I så fall kan du använda unik validering för att säkerställa att den e-post som användaren anger inte finns i databasen.
import { schema, rules } from '@ioc:Adonis/Core/Validator'
{
email: schema.string({}, [
rules.unique({ table: 'users', column: 'email' })
])
}
Du kan lära dig mer om Validator och Unique Rule Validation i den officiella Adonis-dokumentationen.
