Skip to content

When using beforeSave on object with a Pointer column - "error: ParseError code=111 error=schema mismatch for Test.test1; expected Pointer<Test1> but got Object" #65

@jaysonng

Description

@jaysonng

When using beforeSave trigger on an object that has a pointer to another object like so:

struct Test: ParseObject {

    //: These are required for `ParseObject`.
    var originalData: Data?
    var objectId: String?
    var createdAt: Date?
    var updatedAt: Date?
    var ACL: ParseACL?

    var name: String?
    var test1: Test1?
}

struct Test1: ParseObject {

    //: These are required for `ParseObject`.
    var originalData: Data?
    var objectId: String?
    var createdAt: Date?
    var updatedAt: Date?
    var ACL: ParseACL?

    var description: String?
    var test2: Test2?
    var test3: Test3?
}

Doing nothing but just having the beforeSave trigger on produces a schema mismatch error where it expects a Pointer to the sub-object.

func beforeSaveTest(req: Request) async throws -> HookResponse<Test> {

        if let error: HookResponse<Test> = checkHeaders(req) { return error }
        
        var parseRequest = try req.content.decode(HookTrigObjReq<User, Test>.self)
        let options      = try parseRequest.options(req)
        
        if parseRequest.user != nil {
            parseRequest = try await parseRequest.hydrateUser(options: options, request: req)
        }
        
        guard let object = parseRequest.object else {
            return ParseHookResponse(error: .init(code: .missingObjectId,
                                                  message: "Object not sent in request."))
        }
        
        return HookResponse(success: object)
        
    }

I encountered this as I was trying to save a complex object with multiple pointers and tested with these Test objects getting the same result.

error: ParseError code=111 error=schema mismatch for Test.test1; expected Pointer<Test1> but got Object

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions