## 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