diff options
author | bob <bcz@cs.brown.edu> | 2020-01-22 18:38:07 -0500 |
---|---|---|
committer | bob <bcz@cs.brown.edu> | 2020-01-22 18:38:07 -0500 |
commit | 162cea3ee2167a6d999b99630c33edb3779c7bcc (patch) | |
tree | ab5bf22127892436bfef1b0064b6aba96f88bb58 /src/new_fields/Doc.ts | |
parent | 3d11941ebaac312bc72186af05f0a7969a39d7be (diff) |
added an exclude list of field keys when a document is copied
Diffstat (limited to 'src/new_fields/Doc.ts')
-rw-r--r-- | src/new_fields/Doc.ts | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/new_fields/Doc.ts b/src/new_fields/Doc.ts index ae6031ee9..e9f8e6429 100644 --- a/src/new_fields/Doc.ts +++ b/src/new_fields/Doc.ts @@ -535,7 +535,9 @@ export namespace Doc { export function MakeCopy(doc: Doc, copyProto: boolean = false, copyProtoId?: string): Doc { const copy = new Doc(copyProtoId, true); + const exclude = Cast(doc.excludeFields, listSpec("string"), []); Object.keys(doc).forEach(key => { + if (exclude.includes(key)) return; const cfield = ComputedField.WithoutComputed(() => FieldValue(doc[key])); const field = ProxyField.WithoutProxy(() => doc[key]); if (key === "proto" && copyProto) { @@ -547,7 +549,6 @@ export namespace Doc { copy[key] = field; } else if (cfield instanceof ComputedField) { copy[key] = ComputedField.MakeFunction(cfield.script.originalScript); - } else if (doc[key] instanceof Doc && (doc[key] as Doc).dontCopyOnAlias) { } else if (field instanceof ObjectField) { copy[key] = ObjectField.MakeCopy(field); } else if (field instanceof Promise) { |