DEV Community

loading...
Cover image for Node.JS - Foal framework - version 2.4 is here

Node.JS - Foal framework - version 2.4 is here

Loïc Poullain
Fullstack Developer JS/TS. Creator of FoalTS.
・1 min read

Version 2.4 of Foal has been released! Here are the improvements that it brings.

$data references for validation

Version 2.4 allows you to enable the AJV $data option so that you can use the verified data values as validators for other values.

config/default.json

{
  "settings": {
    "ajv": {
      "$data": true
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Example of auth controller

import { Context, Post, ValidateBody } from '@foal/core';

export class AuthController {
  @Post('/signup')
  @ValidateBody({
    type: 'object',
    properties: {
      username: { type: 'string' },
      password: { type: 'string' },
      // "password" and "confirmPassword" should be identical.
      confirmPassword: {
        const: {
          $data: '1/password',
        },
        type: 'string',
      },
    }
    required: [ 'username', 'password', 'confirmPassword' ],
    additionalProperties: false
  })
  signup(ctx: Context) {
    // Do something.
  }
}

Enter fullscreen mode Exit fullscreen mode

Cache option for file downloading

Starting from version 2.4 the Disk.createHttpResponse method accepts an optional parameter to specify the value of the Cache-Control header.

import { Context, dependency, Get } from '@foal/core';
import { Disk } from '@foal/storage';

import { User } from '../entities';

export class ProfileController {
  @dependency
  disk: Disk;

  @Get('/avatar')
  async readProfileImage(ctx: Context<User>) {
    return this.disk.createHttpResponse(ctx.user.avatar, {
      cache: 'no-cache'
    });
  }
Enter fullscreen mode Exit fullscreen mode

Bug fixes

See issue #930.

Contributors

@ZakRabe

Discussion (0)