cloudfunctions/ClearingRedundantFolders/node_modules/@cloudbase/database/dist/esm/serializer/common.js

(开头部分) 3KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

import { getType, isObject, isArray, isDate, isRegExp, isInternalObject } from '../utils/type';
import { serialize as serializeInternalDataType, deserialize as deserializeInternalDataType } from './datatype';
function flatten(query, shouldPreserverObject, parents, visited) {
    const cloned = Object.assign({}, query);
    for (const key in query) {
        if (/^\$/.test(key))
            continue;
        const value = query[key];
        if (value === undefined) {
            delete cloned[key];
            continue;
        }
        if (!value)
            continue;
        if (isObject(value) && !shouldPreserverObject(value)) {
            if (visited.indexOf(value) > -1) {
                throw new Error('Cannot convert circular structure to JSON');
            }
            const newParents = [...parents, key];
            const newVisited = [...visited, value];
            const flattenedChild = flatten(value, shouldPreserverObject, newParents, newVisited);
            cloned[key] = flattenedChild;
            let hasKeyNotCombined = false;
            for (const childKey in flattenedChild) {
                if (!/^\$/.test(childKey)) {
                    cloned[`${key}.${childKey}`] = flattenedChild[childKey];
                    delete cloned[key][childKey];
                }
                else {
                    hasKeyNotCombined = true;
                }
            }
            if (!hasKeyNotCombined) {
                delete cloned[key];
            }
        }
    }
    return cloned;
}
export function flattenQueryObject(query) {
    return flatten(query, isConversionRequired, [], [query]);
}
export function flattenObject(object) {
    return flatten(object, (_) => false, [], [object]);
}
export function mergeConditionAfterEncode(query, condition, key) {
    if (!condition[key]) {
        delete query[key];
    }
    for (const conditionKey in condition) {
        if (query[conditionKey]) {
            if (isArray(query[conditionKey])) {
                query[conditionKey].push(condition[conditionKey]);
            }
            else if (isObject(query[conditionKey])) {
                if (isObject(condition[conditionKey])) {
                    Object.assign(query[conditionKey], condition[conditionKey]);
                }
                else {
                    console.warn(`unmergable condition, query is object but condition is ${getType(condition)}, can only overwrite`, condition, key);
后面还有 22 行代码,购买后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。