वाष्प 4 में मैंने एक उपयोगकर्ता बनाया है और इसमें "गियर" है:

final class User: Model, Content {

    init() {}

    static var schema: String = "user"

    @ID(key: .id)
    var id: UUID?

    @Field(key: "name")
    var name: String?

    @Children(for: \.$user)
        var gear: [Gear]
}


final class Gear: Model, Content {

    init() {}

    static var schema: String = "gear"

    @ID(key: .id)
    var id: UUID?

    @Parent(key: "userId")
    var user: User
}

फिर जब मुझे यह डेटा मिलता है तो मैं करता हूं:

func index(req: Request) throws -> EventLoopFuture<[User]> {
    return User.query(on: req.db).with(\.$gear).all()
}

बल्कि सहज और सरल। सिवाय इसके कि आईडी को यूयूआईडी होने के लिए मजबूर किया जा रहा है, जबकि डेटाबेस में तालिका केवल "टेक्स्ट" टाइप कर सकती है, इसलिए मुझे त्रुटि मिलती है:

{
    "error": true,
    "reason": "server: operator does not exist: text = uuid (op_error)" 
}

तो किसी के पास कोई सुराग है कि इसे कैसे हल किया जाए?

प्रतिक्रिया में मुझे जो संरचना चाहिए वह समान है:

{
    "id": "w32423tsdg3w",
    "name": "username",
    "gear": [{
        "id": "1"
        },
        {
        "id": "2"
        }
    ]
}
3
Vollan 1 अप्रैल 2020, 14:10

1 उत्तर

सबसे बढ़िया उत्तर

इस मामले में ID को String के रूप में सेट किया जाना चाहिए

@ID(key: .id, generatedBy: .user) var id: String?
2
imike 1 अप्रैल 2020, 13:26