问题描述
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',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)
解决方法
尝试为 id
实体定义 User
属性,如下所示 -
@PrimaryColumn()
@Generated('uuid')
id: string;