diff options
-rw-r--r-- | src/fields/util.ts | 23 | ||||
-rw-r--r-- | src/server/database.ts | 4 |
2 files changed, 15 insertions, 12 deletions
diff --git a/src/fields/util.ts b/src/fields/util.ts index b616515de..d699a343d 100644 --- a/src/fields/util.ts +++ b/src/fields/util.ts @@ -285,10 +285,11 @@ export function setter(target: any, in_prop: string | symbol | number, value: an // if (typeof prop === "string" && prop.startsWith("acl") && !["Can Edit", "Can Augment", "Can View", "Not Shared", undefined].includes(value)) return true; if (typeof prop === "string" && prop !== "__id" && prop !== "__fields" && (prop.startsWith("_") || layoutProps.includes(prop))) { - if (!prop.startsWith("_")) { - console.log(prop + " is deprecated - switch to _" + prop); - prop = "_" + prop; - } + // if (!prop.startsWith("_")) { + // console.log(prop + " is deprecated - switch to _" + prop); + // prop = "_" + prop; + // } + if (!prop.startsWith("__")) prop = prop.substring(1); if (target.__LAYOUT__) { target.__LAYOUT__[prop] = value; return true; @@ -307,12 +308,14 @@ export function getter(target: any, in_prop: string | symbol | number, receiver: if (in_prop === "toString" || (in_prop !== HeightSym && in_prop !== WidthSym && in_prop !== LayoutSym && typeof prop === "symbol")) return target.__fields[prop] || target[prop]; if (GetEffectiveAcl(target) === AclPrivate) return prop === HeightSym || prop === WidthSym ? returnZero : undefined; if (prop === LayoutSym) return target.__LAYOUT__; + let search = false; if (typeof prop === "string" && prop !== "__id" && prop !== "__fields" && (prop.startsWith("_") || layoutProps.includes(prop))) { - if (!prop.startsWith("_")) { - console.log(prop + " is deprecated - switch to _" + prop); - prop = "_" + prop; - } - if (target.__LAYOUT__) return target.__LAYOUT__[prop]; + // if (!prop.startsWith("_")) { + // console.log(prop + " is deprecated - switch to _" + prop); + // prop = "_" + prop; + // } + if (!prop.startsWith("__")) search = true; + if (target.__LAYOUT__) return target.__LAYOUT__[prop] ?? (search ? target.__LAYOUT__[prop.substring(1)] : undefined); } if (prop === "then") {//If we're being awaited return undefined; @@ -323,7 +326,7 @@ export function getter(target: any, in_prop: string | symbol | number, receiver: if (SerializationHelper.IsSerializing()) { return target[prop]; } - return getFieldImpl(target, prop, receiver); + return getFieldImpl(target, prop, receiver) ?? (search ? getFieldImpl(target, (prop as any as string).substring(1), receiver) : undefined); } function getFieldImpl(target: any, prop: string | number, receiver: any, ignoreProto: boolean = false): any { diff --git a/src/server/database.ts b/src/server/database.ts index 8e0f99a1f..2a55c14de 100644 --- a/src/server/database.ts +++ b/src/server/database.ts @@ -163,7 +163,7 @@ export namespace Database { } public async insert(value: any, collectionName = DocumentsCollection) { - if (this.db && value) { + if (this.db && value !== null) { if ("id" in value) { value._id = value.id; delete value.id; @@ -185,7 +185,7 @@ export namespace Database { newProm = prom ? prom.then(run) : run(); this.currentWrites[id] = newProm; return newProm; - } else if (value) { + } else if (value !== null) { this.onConnect.push(() => this.insert(value, collectionName)); } } |