sql - Inget standardvärde i användarnamnet vid försök att skapa en användare i nestjs


Även om jag kan utföra GET-förfrågningar perfekt har jag problem med att skicka en POST-förfrågan med formdata.

Och även om jag kan skicka en POST-begäran framgångsrikt med form-urlencoded och rå JSON har jag problem med att hantera formdata.

När jag försöker skicka en POST-förfrågan till min databas verkar jag få ett fel som säger: ER_NO_DEFAULT_FOR_FIELD: Field 'username' doesn't have a default value även om jag anger ett värde för det i Postman.

Nedan är koden för mitt repo:

import { EntityRepository, Repository } from 'typeorm';
import { User } from './user.entity';
import { CreateUserDTO } from './dto/create-user.dto';

@EntityRepository(User)

export class UserRepository extends Repository<User> {
    getUser() {
        const query = this.createQueryBuilder('user');
        return query.getMany();
    }
createUser(createUserDTO: CreateUserDTO) {
    const {username, email } = createUserDTO;
    // tslint:disable-next-line:no-console
    console.log('Repo', username);

    // tslint:disable-next-line:new-parens
    const newuser = new User(); //edited after Natan's comment
    newuser.username = username;
    newuser.email = email;

    return newuser.save();
    }
}

Detta är min enhetskod:

@Entity()
export class User extends BaseEntity {
    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    username: string;

    @Column()
    email: string;
}

och min postförfrågan i controllern:

@Post()
    createUser(
        @Body() createUserDTO: CreateUserDTO,
    ) {
        // tslint:disable-next-line:no-console
        console.log('creating new user', createUserDTO);
        return this.userService.createUser(createUserDTO);
    }

Och här är en bild av POST-förfrågan i Postman:

Svar #1

Du måste använda () för att instansiera en klass i TS, som:

createUser(createUserDTO: CreateUserDTO) {
    const {username, email } = createUserDTO;
    // tslint:disable-next-line:no-console
    console.log('Repo', username);

    // tslint:disable-next-line:new-parens
    const newuser = new User(); // <- HERE IS new User()
    newuser.username = username;
    newuser.email = email;

    return newuser.save();
}