我有一个实体和服务定义如下。
user.entity.js
@Entity({ name: 'users' })
export class User {
@Column({
type: 'binary',
length: 16,
select: false,
primary: true,
default: () => `(UUID_TO_BIN(UUID(), 1))`,
})
id: string;
@Index()
@Column({ type: 'varchar', length: 225, nullable: false })
name: string;
@Column({ type: 'varchar', length: 15, unique: true, nullable: false })
MSISDN: string;
@Column({ type: 'varchar', length: 225, unique: true, nullable: false })
email_address: string;
@Column({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP' })
created_at: Date;
@Column({ type: 'datetime', nullable: true, onUpdate: 'CURRENT_TIMESTAMP' })
updated_at: Date;
}
user.service.js
@Injectable()
export class UserService {
constructor(
@InjectRepository(User)
private usersRepository: Repository<User>,
) {}
create(user: DeepPartial<User>): Promise<User> {
return this.usersRepository
.createQueryBuilder()
.insert()
.values({ ...user})
.execute();
}
}
每当我尝试从 Postman 客户端创建用户时,该记录实际上已插入到数据库中,但我从 postman 客户端收到了 500 响应。
邮递员回应
{
"statusCode": 500,
"message": "Internal server error"
}
CLI 错误如下所示:
[Nest] 9084 - 15/03/2021, 11:17:47 [ExceptionsHandler] Cannot update entity because entity id is not set in the entity. +331142ms
Error: Cannot update entity because entity id is not set in the entity.
at C:\Users\Mnengwa\workspace\kodisha\kodisha-web-api\node_modules\typeorm\query-builder\ReturningResultsEntityUpdator.js:128:39
at Array.map (<anonymous>)
at ReturningResultsEntityUpdator.<anonymous> (C:\Users\Mnengwa\workspace\kodisha\kodisha-web-api\node_modules\typeorm\query-builder\ReturningResultsEntityUpdator.js:122:46)
at step (C:\Users\Mnengwa\workspace\kodisha\kodisha-web-api\node_modules\typeorm\node_modules\tslib\tslib.js:141:27)
at Object.next (C:\Users\Mnengwa\workspace\kodisha\kodisha-web-api\node_modules\typeorm\node_modules\tslib\tslib.js:122:57)
at C:\Users\Mnengwa\workspace\kodisha\kodisha-web-api\node_modules\typeorm\node_modules\tslib\tslib.js:115:75
at new Promise (<anonymous>)
at Object.__awaiter (C:\Users\Mnengwa\workspace\kodisha\kodisha-web-api\node_modules\typeorm\node_modules\tslib\tslib.js:111:16)
at ReturningResultsEntityUpdator.insert (C:\Users\Mnengwa\workspace\kodisha\kodisha-web-api\node_modules\typeorm\query-builder\ReturningResultsEntityUpdator.js:87:24)
at InsertQueryBuilder.<anonymous> (C:\Users\Mnengwa\workspace\kodisha\kodisha-web-api\node_modules\typeorm\query-builder\InsertQueryBuilder.js:105:76)