const pictureEntity = updateUserDto?.picture
? await this.filesService.find(updateUserDto.picture)
: null;
if (pictureEntity) {
const pictureEntity.url = await this.filesService.getFileUrl(pictureEntity);
}
这是将值分配给图片实体的正确方法吗?基本上,如果未定义属性图片,则我不应该在filesService中使用服务查找,因为typeORM将返回在属性图片为null或未定义时找到的第一个值。
我正在这样做:
if (updateUserDto?.picture) {
const pictureEntity = await this.filesService.find(updateUserDto.picture);
}
但是 TS 会抱怨,因为我在 If 中声明了一个变量。
如果只想在设置updateUserDto?.picture
时将pictureEntity
设置为值,则您最初的尝试几乎是正确的,但是您只需要在if
块之外定义变量即可设置这样的值
let pictureEntity;
if (updateUserDto?.picture) {
pictureEntity = await this.filesService.find(updateUserDto.picture);
}
请注意,您需要使用let
而不是const
,因为您现在在创建后分配给变量。另请注意,如果updateUserDto?.picture
是伪造的,则将undefined
pictureEntity
你可以做:
const pictureEntity = updateUserDto?.picture && await this.filesService.find(updateUserDto.picture);
如果updateUserDto
是null
或undefined
,pictureEntity
将被undefined
。否则,它将await
你的另一个承诺。
编辑:
这里也不需要const
:
if (pictureEntity) {
const pictureEntity.url = await this.filesService.getFileUrl(pictureEntity);
}
不使用const
创建对象属性。