import { Field, Opt, FieldValue, FieldId } from "./Field"; import { Document } from "./Document"; import { Key } from "./Key"; import { Types } from "../server/Message"; import { ObjectID } from "bson"; export class DocumentReference extends Field { get Key(): Key { return this.key; } get Document(): Document { return this.document; } constructor(private document: Document, private key: Key) { super(); } UpdateFromServer() { } Dereference(): FieldValue { return this.document.Get(this.key); } DereferenceToRoot(): FieldValue { let field: FieldValue = this; while (field instanceof DocumentReference) { field = field.Dereference(); } return field; } TrySetValue(value: any): boolean { throw new Error("Method not implemented."); } GetValue() { throw new Error("Method not implemented."); } Copy(): Field { throw new Error("Method not implemented."); } ToScriptString(): string { return ""; } ToJson() { return { type: Types.DocumentReference, data: this.document.Id, id: this.Id }; } }