• 使用 cascades 自动保存相关对象

    使用 cascades 自动保存相关对象

    我们可以在关系中设置cascade选项,这是就可以在保存其他对象的同时保存相关对象。让我们更改一下的 photo 的@OneToOne装饰器:

    1. export class Photo {
    2. /// ... other columns
    3. @OneToOne(type => PhotoMetadata, metadata => metadata.photo, {
    4. cascade: true
    5. })
    6. metadata: PhotoMetadata;
    7. }

    使用cascade允许就不需要边存 photo 边存元数据对象。我们可以简单地保存一个 photo 对象,由于使用了 cascade,metadata 也将自动保存。

    1. createConnection(options)
    2. .then(async connection => {
    3. // 创建 photo 对象
    4. let photo = new Photo();
    5. photo.name = "Me and Bears";
    6. photo.description = "I am near polar bears";
    7. photo.filename = "photo-with-bears.jpg";
    8. photo.isPublished = true;
    9. // 创建 photo metadata 对象
    10. let metadata = new PhotoMetadata();
    11. metadata.height = 640;
    12. metadata.width = 480;
    13. metadata.compressed = true;
    14. metadata.comment = "cybershoot";
    15. metadata.orientation = "portait";
    16. photo.metadata = metadata; // this way we connect them
    17. // 获取 repository
    18. let photoRepository = connection.getRepository(Photo);
    19. // 保存photo的同时保存metadata
    20. await photoRepository.save(photo);
    21. console.log("Photo is saved, photo metadata is saved too.");
    22. })
    23. .catch(error => console.log(error));