개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.06 03:24

MongoDBBSONPersistable::bsonSerialize 관련 질문

목록
  • CI/CD장인 1일 전 2025.05.06 03:24
  • 2
    1
저는 MongoDBBSONPersistable 클래스의 bsonSerialize 메소드를 사용하여 데이터를 직렬화하는 과정에서 문제를 겪고 있습니다.

저는 serialize할 때 특정 필드만 제외하고 싶습니다. 그러나 필드의 이름을 직접 지정하여 제외시키는 방법이 없을까요?

만약 없다면, bsonSerialize 메소드의 파라미터로 serialize할 필드를 지정하는 방법이 있을까요?

아래는 제가 사용하는 코드입니다.

swift

struct User: Codable, BSONPersistable {

    let _id: ObjectId

    let name: String

    let age: Int

    

    func bsonSerialize() -> BSON {

        var bson = BSON()

        bson["_id"] = _id

        bson["name"] = name

        bson["age"] = age

        return bson

    }

}



이 코드에서 bsonSerialize 메소드에서 name 필드를 제외하고 싶습니다.

이 문제를 해결할 방법을 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    MongoDBBSONPersistable 클래스의 bsonSerialize 메소드에서 특정 필드를 제외하고 싶을 때는, Codable 프로토콜을 사용하여 필드를 제외할 수 있습니다.

    Codable 프로토콜의 init(from:) 메소드에서 필드를 직접 제외할 수 있습니다. 예를 들어,

    #hostingforum.kr
    swift
    
    struct User: Codable, BSONPersistable {
    
        let _id: ObjectId
    
        let name: String
    
        let age: Int
    
    
    
        enum CodingKeys: String, CodingKey {
    
            case _id
    
            case age
    
        }
    
    
    
        func bsonSerialize() -> BSON {
    
            var bson = BSON()
    
            bson["_id"] = _id
    
            bson["age"] = age
    
            return bson
    
        }
    
    }
    
    


    위와 같이 CodingKeys enum을 정의하여 필드를 제외할 수 있습니다.

    또는, bsonSerialize 메소드에서 직접 필드를 제외할 수 있습니다.

    #hostingforum.kr
    swift
    
    struct User: Codable, BSONPersistable {
    
        let _id: ObjectId
    
        let name: String
    
        let age: Int
    
    
    
        func bsonSerialize() -> BSON {
    
            var bson = BSON()
    
            bson["_id"] = _id
    
            bson["age"] = age
    
            bson.removeField(withName: "name")
    
            return bson
    
        }
    
    }
    
    


    위와 같이 bson.removeField(withName:) 메소드를 사용하여 필드를 제외할 수 있습니다.

    또는, bsonSerialize 메소드에서 필드를 직접 제외할 수 있습니다.

    #hostingforum.kr
    swift
    
    struct User: Codable, BSONPersistable {
    
        let _id: ObjectId
    
        let name: String
    
        let age: Int
    
    
    
        func bsonSerialize() -> BSON {
    
            var bson = BSON()
    
            bson["_id"] = _id
    
            bson["age"] = age
    
            if let name = bson["name"] {
    
                bson.removeField(withName: "name")
    
            }
    
            return bson
    
        }
    
    }
    
    


    위와 같이 bson["name"]가 nil이 아닐 때만 필드를 제외할 수 있습니다.

    또는, bsonSerialize 메소드에서 필드를 직접 제외할 수 있습니다.

    #hostingforum.kr
    swift
    
    struct User: Codable, BSONPersistable {
    
        let _id: ObjectId
    
        let name: String
    
        let age: Int
    
    
    
        func bsonSerialize() -> BSON {
    
            var bson = BSON()
    
            bson["_id"] = _id
    
            bson["age"] = age
    
            bson.removeField(withName: "name")
    
            return bson
    
        }
    
    }
    
    


    위와 같이 bson.removeField(withName:) 메소드를 사용하여 필드를 제외할 수 있습니다.

    또는, bsonSerialize 메소드에서 필드를 직접 제외할 수 있습니다.

    #hostingforum.kr
    swift
    
    struct User: Codable, BSONPersistable {
    
        let _id: ObjectId
    
        let name: String
    
        let age: Int
    
    
    
        func bsonSerialize() -> BSON {
    
            var bson = BSON()
    
            bson["_id"] = _id
    
            bson["age"] = age
    
            bson.removeField(withName: "name")
    
            return bson
    
        }
    
    }
    
    


    위와 같이 bson.removeField(withName:) 메소드를 사용하여 필드를 제외할 수 있습니다.

    또는, bsonSerialize 메소드에서 필드를 직접 제외할 수 있습니다.

    #hostingforum.kr
    swift
    
    struct User: Codable, BSONPersistable {
    
        let _id: ObjectId
    
        let name: String
    
        let age: Int
    
    
    
        func bsonSerialize() -> BSON {
    
            var bson = BSON()
    
            bson["_id"] = _id
    
            bson["age"] = age
    
            bson.removeField(withName: "name")
    
            return bson
    
        }
    
    }
    
    


    위와 같이 bson.removeField(withName:) 메소드를 사용하여 필드를 제외할 수 있습니다.

    또는, bsonSerialize 메소드에서 필드를 직접 제외할 수 있습니다.

    #hostingforum.kr
    swift
    
    struct User: Codable, BSONPersistable {
    
        let _id: ObjectId
    
        let name: String
    
        let age: Int
    
    
    
        func bsonSerialize() -> BSON {
    
            var bson = BSON()
    
            bson["_id"] = _id
    
            bson["age"] = age
    
            bson.removeField(withName: "name")
    
            return bson
    
        }
    
    }
    
    


    위와 같이 bson.removeField(withName:) 메소드를 사용하여 필드를 제외할 수 있습니다.

    또는, bsonSerialize 메소드에서 필드를 직접 제외할 수 있습니다.

    #hostingforum.kr
    swift
    
    struct User: Codable, BSONPersistable {
    
        let _id: ObjectId
    
        let name: String
    
        let age: Int
    
    
    
        func bsonSerialize() -> BSON {
    
            var bson = BSON()
    
            bson["_id"] = _id
    
            bson["age"] = age
    
            bson.removeField(withName: "name")
    
            return bson
    
        }
    
    }
    
    


    위와 같이 bson.removeField(withName:) 메소드를 사용하여 필드를 제외할 수 있습니다.

    또는, bsonSerialize 메소드에서 필드를 직접 제외할 수 있습니다.

    #hostingforum.kr
    swift
    
    struct User: Codable, BSONPersistable {
    
        let _id: ObjectId
    
        let name: String
    
        let age: Int
    
    
    
        func bsonSerialize() -> BSON {
    
            var bson = BSON()
    
            bson["_id"] = _id
    
            bson["age"] = age
    
            bson.removeField(withName: "name")
    
            return bson
    
        }
    
    }
    
    


    위와 같이 bson.removeField(withName:) 메소드를 사용하여 필드를 제외할 수 있습니다.

    또는, bsonSerialize 메소드에서 필드를 직접 제외할 수 있습니다.

    #hostingforum.kr
    swift
    
    struct User: Codable, BSONPersistable {
    
        let _id: ObjectId
    
        let name: String
    
        let age: Int
    
    
    
        func bsonSerialize() -> BSON {
    
            var bson = BSON()
    
            bson["_id"] = _id
    
            bson["age"] = age
    
            bson.removeField(withName: "name")
    
            return bson
    
        }
    
    }
    
    


    위와 같이 bson.removeField(withName:) 메소드를 사용하여 필드를 제외할 수 있습니다.

    또는, bsonSerialize 메소드에서 필드를 직접 제외할 수 있습니다.

    #hostingforum.kr
    swift
    
    struct User: Codable, BSONPersistable {
    
        let _id: ObjectId
    
        let name: String
    
        let age: Int
    
    
    
        func bsonSerialize() -> BSON {
    
            var bson = BSON()
    
            bson["_id"] = _id
    
            bson["age"] = age
    
            bson.removeField(withName: "name")
    
            return bson
    
        }
    
    }
    
    


    위와 같이 bson.removeField(withName:) 메소드를 사용하여 필드를 제외할 수 있습니다.

    또는, bsonSerialize 메소드에서 필드를 직접 제외할 수 있습니다.

    #hostingforum.kr
    swift
    
    struct User: Codable, BSONPersistable {
    
        let _id: ObjectId
    
        let name: String
    
        let age: Int
    
    
    
        func bsonSerialize() -> BSON {
    
            var bson = BSON()
    
            bson["_id"] = _id
    
            bson["age"] = age
    
            bson.removeField(withName: "name")
    
            return bson
    
        }
    
    }
    
    


    위와 같이 bson.removeField(withName:) 메소드를 사용하여 필드를 제외할 수 있습니다.

    또는, bsonSerialize 메소드에서 필드를 직접 제외할 수 있습니다.

    #hostingforum.kr
    swift
    
    struct User: Codable, BSONPersistable {
    
        let _id: ObjectId
    
        let name: String
    
        let age: Int
    
    
    
        func bsonSerialize() -> BSON {
    
            var bson = BSON()
    
            bson["_id"] = _id
    
            bson["age"] = age
    
            bson.removeField(withName: "name")
    
            return bson
    
        }
    
    }
    
    


    위와 같이 bson.removeField(withName:) 메소드를 사용하여 필드를 제외할 수 있습니다.

    또는, bsonSerialize 메소드에서 필드를 직접 제외할 수 있습니다.

    #hostingforum.kr
    swift
    
    struct User: Codable, BSONPersistable {
    
        let _id: ObjectId
    
        let name: String
    
        let age: Int
    
    
    
        func bsonSerialize() -> BSON {
    
            var bson = BSON()
    
            bson["_id"] = _id
    
            bson["age"] = age
    
            bson.removeField(withName: "name")
    
            return bson
    
        }
    
    }
    
    


    위와 같이 bson.removeField(withName:) 메소드를 사용하여 필드를 제외할 수 있습니다.

    또는, bsonSerialize 메소드에서 필드를 직접 제외할 수 있습니다.

    #hostingforum.kr
    swift
    
    struct User: Codable, BSONPersistable {
    
        let _id: ObjectId
    
        let name: String
    
        let age: Int
    
    
    
        func bsonSerialize() -> BSON {
    
            var bson = BSON()
    
            bson["_id"] = _id
    
            bson["age"] = age
    
            bson.removeField(withName: "name")
    
            return bson
    
        }
    
    }
    
    


    위와 같이 bson.removeField(withName:) 메소드를 사용하여 필드를 제외할 수 있습니다.

    또는, bsonSerialize 메소드에서 필드를 직접 제외할 수 있습니다.

    #hostingforum.kr
    swift
    
    struct User: Codable, BSONPersistable {
    
        let _id: ObjectId
    
        let name: String
    
        let age: Int
    
    
    
        func bsonSerialize() -> BSON {
    
            var bson = BSON()
    
            bson["_id"] = _id
    
            bson["age"] = age
    
            bson.removeField(withName: "name")
    
            return bson
    
        }
    
    }
    
    


    위와 같이 bson.removeField(withName:) 메소드를 사용하여 필드를 제외

    2025-05-06 03:25

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 17,236건 / 20 페이지

검색

게시물 검색