我有一个实体和服务定义如下。
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)发布于 2021-09-02 15:54:01
我必须在我的reload调用(而不是insert)中将false选项指定为false,以使错误消失。
对于insert,您需要在调用execute之前向链中添加一个updateEntity(false)调用。
发布于 2021-03-16 05:31:48
尝试定义id实体的User属性如下-
@PrimaryColumn()
@Generated('uuid')
id: string;https://stackoverflow.com/questions/66634526
复制相似问题