const { dsl, SchemaUtils, validateAsync } = require('schema-dsl');
const userSchema = dsl({
id: 'objectId!',
name: 'string!',
email: 'email!',
password: 'string!',
age: 'integer:18-120'
});
// POST /users - 创建
app.post('/users', async (req, res, next) => {
const schema = SchemaUtils.omit(userSchema, ['id']);
const data = await validateAsync(schema, req.body);
// 保存到数据库...
});
// GET /users/:id - 查询
app.get('/users/:id', async (req, res) => {
const schema = SchemaUtils.omit(userSchema, ['password']);
const user = await db.findById(req.params.id);
const result = validate(schema, user);
res.json(result.data);
});
// PATCH /users/:id - 更新
app.patch('/users/:id', async (req, res, next) => {
const schema = SchemaUtils.pick(userSchema, ['name', 'age']).partial();
const data = await validateAsync(schema, req.body);
// 更新数据库...
});