Open omatrot opened 5 years ago
@omatrot I think you should take a look at #9 I managed to do it with something like this:
class A {
b: B;
}
class B {
a: A
}
class C {
// declare your model schema here, it has to be declared after A and B,
// for my case I have class C using class A so this is natural, but maybe you can just declare
// everything in one file
}
(also, I use object
instead of reference
)
if A -> object() -> B, B -> object() -> A creates a circular serialization structure which will run forever. create id field on either side and reference them with reference()
I used this util function to generate unique id for distinct classes
const idMap: { [className: string]: number } = {}
export const id = <T extends Function>(clazz: T) => {
const next = (idMap[clazz.name] ?? 0) + 1
idMap[clazz.name] = next
return next
}
and use like this
class Model {
readonly id: number = id(Model)
...
}
I have the following Circular reference: Vehicle->Device->Vehicle
Vehicle has a Device nested object and vice-versa.
When I deserialize Vehicule, because Device has not been seen yet, the corresponding property is not set.
I would say that unresolved references are left unprocessed.
Am I wrong about that? Is there a simple way to solve this problem?