Thứ Ba, 13 tháng 4, 2021

Lucid ORM - Serialization trong AdonisJS




## Serialization
Hỗ trợ cho các API format dữ liệu đã lấy ra từ DB.

1. Lucid models
const User = use('App/Models/User')
const users = await User.all() // users -> Vanilla Serializer instance
==>
Chuyển thành `serializable instance`: `const json = users.toJSON()`.

2. Using Serializer
File app/Models/User.js
<!-->
class User extends Model {
static get Serializer () {
return // your own implementation
}
}
<-->

## Vanilla Serializer
- Thêm tất cả các quan hệ phụ thuộc như các thuộc tính
- Khi sử dụng loading hoặc lazy loading thì dữ liệu sẽ được thêm vào ở `__meta__`
- Giúp format phân trang(pagination)

## Creating Serializer

1. tạo File custome serializer app/Serializers/CustomSerializer.js
<!-->
class CustomSerializer {
constructor (rows, pages = null, isOne = false) {
this.rows = rows
this.pages = pages
this.isOne = isOne
}

first () {
return this.rows[0]
}

last () {
return this.rows[this.rows.length - 1]
}

size () {
return this.isOne ? 1 : this.rows.length
}

toJSON () {
// return formatted data
}
}

module.exports = CustomSerializer
<-->

2. Đăng kí
start/hooks.js
<!-->
const { ioc } = require('@adonisjs/fold')

ioc.bind('MyApp/CustomSerializer', () => {
return require('./app/Serializers/CustomSerializer')
})
<-->

3. Sử dụng ở model
<!-->
class User extends Model {
static get Serializer () {
return 'MyApp/CustomSerializer'
}
}
<-->


Không có nhận xét nào:

Đăng nhận xét

Học lập trình web căn bản với PHP

Bài 1: Các kiến thức căn bản Part 1:  https://jimmyvan88.blogspot.com/2012/05/can-ban-lap-trinh-web-voi-php-bai-1-cac.html Part 2:  https://...