What is the best way to verify in Nest.js that a DTO is a number and not blank?

I'm attempting to ensure the validity of a request using DTO. The validation requirements are that the value must be a number and cannot be empty.

Upon trying to use just the IsNumber() decorator and sending a body with an empty property, the validation process fails. Therefore, I attempted to add the IsNotEmpty() decorator as well. However, it seems this approach is not effective because even when passing an empty property, the flow continues without any validation errors. Here is a snippet of my code:

export class CreateOrderShippingDto implements CreateOrderShippingDtoInterface {
  @ApiProperty({
    type: Number,
  })
  @IsNotEmpty()
  @IsNumber()
  readonly orderId: number;
}

Could someone offer assistance with this issue?

Answer №1

IsNotEmpty serves as a string validator according to the documentation:

This function checks if the provided value is not empty (!== '', !== null, !== undefined).

To verify whether a value is defined, opt for IsDefined:

export class CreateOrderShippingDto implements CreateOrderShippingDtoInterface {
  @ApiProperty({
    type: Number,
  })
  @IsDefined()
  @IsNumber()
  readonly orderId: number;
}

In addition, it's worth noting that IsDefined disregards the skipMissingProperties setting from the configuration, providing a reliable means of ensuring a value is assigned.

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

What causes the function endpoint to become unreachable when a throw is used?

One practical application of the never type in typescript occurs when a function has an endpoint that is never reached. However, I'm unsure why the throw statement specifically results in this unreachable endpoint. function error(message: string): ne ...

Implement new interface methods on-the-fly

I am seeking a way to dynamically incorporate methods that are defined in an interface. Initially, I considered using the index signature approach, but unfortunately, not all methods have the same signature. My objective is to preserve all type information ...

I am experiencing an issue where my code is not iterating over the data in my

The issue I'm facing with the code below is that it only displays the quantity of the first item, rather than all items in my shopping cart. import {ShoppingCartItem} from './shopping-cart-item'; export class ShoppingCart { constructor ...

What is the most efficient method for incorporating React into Wordpress while using Typescript?

Is it possible for me to utilize the React / React-Dom scripts that Wordpress has enqueued in my bundled javascript, while still being able to use the -dev installed React for development purposes? The javascript files are designed for a WordPress plugin ...

The issue of a malfunctioning react TypeScript map when used in conjunction with useContext

I am attempting to retrieve data from the TVMaze API using React, TypeScript, and useContext. Although I can display the data, the useContext does not update with the return value, so when I use the map function, nothing is displayed. Any advice on how to ...

GraphQL queries that are strongly-typed

Currently working on a Vue CLI project where I am utilizing axios as my request library. In all the examples I've come across, they use strings for queries like this: { hero { name friends { name } } } Given that I am employing ...

Issue encountered when attempting to import Esri types: "Unable to utilize 'new' with an expression that does not have a call or construct signature."

There seems to be a simple solution that I am overlooking. I am currently working on a class that utilizes the Esri ArcGIS API, but I encounter a TypeScript error when importing type definitions from the arcgis-js-api's d.ts file. The error states "Ca ...

Encountering errors while attempting to install TypeScript through NPM

I am encountering an issue while trying to install Typescript using npm. Following the documentation, I executed the command: npm install -g typescript or sudo npm install -g typescript - Everything seems to be going smoothly until it reaches about 2 ...

What is the best way to pass a value to a modal and access it within the modal's component in Angular 8?

How can I trigger the quickViewModal to open and send an ID to be read in the modal component? Seeking assistance from anyone who can help. Below is the HTML code where the modal is being called: <div class="icon swipe-to-top" data-toggle="modal" da ...

Separating the time and date into distinct variables offers flexibility in how they

Struggling with formatting time in a web component using TypeScript and React. The code below is working: new Date(myDate) .toLocaleTimeString( 'en-US', { weekday: 'short', year: 'numeric', month: 'short', ...

Looking for guidance on creating a TypeScript interface within React?

How can I properly declare the tagItems in the following code? I am currently getting a warning in VSCode that reads: (property) tagItems: [{ id: number; label: String; name: String; state: Boolean; }] Type '[{ id: number; label: stri ...

Encountered an issue in Angular 6: Unable to access property '0' of undefined

There's an error popping up in the console saying, Cannot read property '0' of undefined, but surprisingly I'm still getting the expected result. Below is my HTML code snippet: <div class="col-md-3"> <div class="slider-prod ...

How can I access the sx properties of the year picker within the <DatePicker/> component in Material UI?

I'm currently utilizing the DatePicker component within Material UI. My goal is to access the sx properties of the year picker section, but I'm unsure of the correct approach. Approaches Taken: I attempted to utilize both the slotProps and sx p ...

Clearing Out a Shopping Cart in Angular

Hey there, I have a little dilemma with my shopping cart system. I can easily add and delete products using an API. However, when it comes to deleting an item from the cart, I have to do it one by one by clicking on a button for each item, which is not ver ...

Using TypeScript, take advantage of optional chaining in conjunction with object destructuring

After updating typescript to version 3.7.4, I find myself trying to modify my code. My code is straightforward: interface Test event: { queryStringParameters: { [name: string]: string } | null; } } const test:Test = (event) => { // const { n ...

Is there a way to make a model behave like an object in loopback when typing?

One of the challenges I face is dealing with a loopback model that is often represented in raw JSON format. For example: @model() class SomeModel extends Entity { @property({ type: 'string' }) id?: string; } In its raw JSON form, it would l ...

What is causing the issue where search query parameters are not recognizing the initially selected option?

Hey, I'm having an issue with searchParams. The problem is that when I apply filters like "Breakfast, Lunch, Dinner", the first chosen option isn't showing up in the URL bar. For example, if I choose breakfast nothing happens, but if I choose lun ...

Receiving errors in React/TS/material-ui when attempting to use a variable as a value for a grid property. Messages include "No overload matches" and "Type 'number' is not assignable to type..."

tl;dr: When using a variable as the value of a grid xs property in JSX, material-ui throws a TS error. I'm working on implementing grids in material-ui with React/TypeScript. The goal is to make the width of a specific element dependent on the quant ...

How can a TypeScript Angular directive utilize a function?

Recently, I have been following a unique Angular directive TypeScript pattern that I find really effective. The approach involves giving the directive its own isolated scope by creating a new controller. I encountered a scenario where I needed to invoke a ...

Typescript: The argument provided, which is of type 'number', cannot be matched to a parameter of type 'string'

Need a solution to remove decimals from a number in TypeScript. I have tried using the parseInt method but encountered the following error: Argument of type 'number' is not assignable to parameter of type 'string' Code: function test ...