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();
}
