当前位置: 首页>>代码示例>>TypeScript>>正文


TypeScript data.equalRecordIdentities函数代码示例

本文整理汇总了TypeScript中@orbit/data.equalRecordIdentities函数的典型用法代码示例。如果您正苦于以下问题:TypeScript equalRecordIdentities函数的具体用法?TypeScript equalRecordIdentities怎么用?TypeScript equalRecordIdentities使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了equalRecordIdentities函数的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。

示例1: deepGet

        Object.keys(replacement.relationships).forEach(field => {
          let data = deepGet(replacement, ['relationships', field, 'data']);
          if (data !== undefined) {
            let currentData = deepGet(current, [
              'relationships',
              field,
              'data'
            ]);
            let relationshipChanged;

            if (isArray(data)) {
              if (currentData) {
                relationshipChanged = !equalRecordIdentitySets(
                  currentData,
                  data
                );
              } else {
                relationshipChanged = true;
                currentData = [];
              }
            } else {
              if (currentData) {
                relationshipChanged = !equalRecordIdentities(currentData, data);
              } else {
                relationshipChanged = true;
                currentData = null;
              }
            }

            if (relationshipChanged) {
              changed = true;
              deepSet(result, ['relationships', field, 'data'], currentData);
            }
          }
        });
开发者ID:orbitjs,项目名称:orbit.js,代码行数:35,代码来源:sync-inverse-patch-operators.ts

示例2: deepGet

 .then(record => {
   let relationships = deepGet(record, ['relationships', operation.relationship, 'data']) as RecordIdentity[];
   if (relationships) {
     for (let i = 0, l = relationships.length; i < l; i++) {
       if (equalRecordIdentities(relationships[i], operation.relatedRecord)) {
         relationships.splice(i, 1);
         break;
       }
     }
     return source.putRecord(record);
   }
 });
开发者ID:SmuliS,项目名称:orbit.js,代码行数:12,代码来源:transform-operators.ts

示例3: relationshipExists

 relationshipExists(record: RecordIdentity, relationship: string, relatedRecord: RecordIdentity): boolean {
   let rels = this._relationships[record.type].get(record.id);
   if (rels) {
     let rel = rels[relationship];
     if (rel) {
       if (rel instanceof RecordIdentityMap) {
         return rel.has(relatedRecord);
       } else {
         return equalRecordIdentities(relatedRecord, rel);
       }
     }
   }
   return !relatedRecord;
 }
开发者ID:SmuliS,项目名称:orbit.js,代码行数:14,代码来源:relationship-accessor.ts

示例4: test

  test('#patch can add and clear has-one relationship', function(assert) {
    assert.expect(2);

    let cache = new MemoryCache({ schema, keyMap });

    const jupiter: Record = { id: 'jupiter', type: 'planet' };
    cache.patch(t => t.addRecord(jupiter));

    const callisto = { id: 'callisto', type: 'moon' };
    cache.patch(t => t.addRecord(callisto));

    cache.patch(t =>
      t.replaceRelatedRecord(callisto, 'planet', {
        type: 'planet',
        id: 'jupiter'
      })
    );

    assert.ok(
      equalRecordIdentities(
        cache.getRelatedRecordSync(callisto, 'planet'),
        jupiter
      ),
      'relationship added'
    );

    cache.patch(t => t.replaceRelatedRecord(callisto, 'planet', null));

    assert.notOk(
      equalRecordIdentities(
        cache.getRelatedRecordSync(callisto, 'planet'),
        jupiter
      ),
      'relationship cleared'
    );
  });
开发者ID:orbitjs,项目名称:orbit.js,代码行数:36,代码来源:memory-cache-test.ts

示例5: relatedRecordReplaced

export function relatedRecordReplaced(
  schema: Schema,
  record: RecordIdentity,
  relationship: string,
  currentRelatedRecord: RecordIdentity,
  relatedRecord: RecordIdentity
): RecordOperation[] {
  const ops: RecordOperation[] = [];

  if (!equalRecordIdentities(relatedRecord, currentRelatedRecord)) {
    const relationshipDef = schema.getModel(record.type).relationships[
      relationship
    ];
    const inverseRelationship = relationshipDef.inverse;

    if (inverseRelationship) {
      if (currentRelatedRecord) {
        ops.push(
          removeRelationshipOp(
            schema,
            currentRelatedRecord,
            inverseRelationship,
            record
          )
        );
      }

      if (relatedRecord) {
        ops.push(
          addRelationshipOp(schema, relatedRecord, inverseRelationship, record)
        );
      }
    }
  }

  return ops;
}
开发者ID:orbitjs,项目名称:orbit.js,代码行数:37,代码来源:schema-consistency-utils.ts

示例6:

 r => !equalRecordIdentities(r, relatedRecord)
开发者ID:orbitjs,项目名称:orbit.js,代码行数:1,代码来源:sync-patch-operators.ts

示例7: replaceRelatedRecord

        record,
        relationship,
        relatedRecords: currentRelatedRecords || []
      };
    }
  },

  replaceRelatedRecord(
    cache: SyncRecordAccessor,
    op: ReplaceRelatedRecordOperation
  ): RecordOperation {
    const { record, relationship, relatedRecord } = op;
    const currentRelatedRecord = cache.getRelatedRecordSync(
      record,
      relationship
    );

    if (
      currentRelatedRecord === undefined ||
      !equalRecordIdentities(currentRelatedRecord, relatedRecord)
    ) {
      return {
        op: 'replaceRelatedRecord',
        record,
        relationship,
        relatedRecord: currentRelatedRecord || null
      };
    }
  }
};
开发者ID:orbitjs,项目名称:orbit.js,代码行数:30,代码来源:sync-inverse-patch-operators.ts

示例8: equalRecordIdentities

  transform.operations.forEach((operation: RecordOperation) => {
    let request;
    let newRequestNeeded = true;

    if (
      prevRequest &&
      equalRecordIdentities(prevRequest.record, operation.record)
    ) {
      if (operation.op === 'removeRecord') {
        newRequestNeeded = false;

        if (prevRequest.op !== 'removeRecord') {
          prevRequest = null;
          requests.pop();
        }
      } else if (
        prevRequest.op === 'addRecord' ||
        prevRequest.op === 'updateRecord'
      ) {
        if (operation.op === 'replaceAttribute') {
          newRequestNeeded = false;
          replaceRecordAttribute(
            prevRequest.record,
            operation.attribute,
            operation.value
          );
        } else if (operation.op === 'replaceRelatedRecord') {
          newRequestNeeded = false;
          replaceRecordHasOne(
            prevRequest.record,
            operation.relationship,
            operation.relatedRecord
          );
        } else if (operation.op === 'replaceRelatedRecords') {
          newRequestNeeded = false;
          replaceRecordHasMany(
            prevRequest.record,
            operation.relationship,
            operation.relatedRecords
          );
        }
      } else if (
        prevRequest.op === 'addToRelatedRecords' &&
        operation.op === 'addToRelatedRecords' &&
        (prevRequest as AddToRelatedRecordsRequest).relationship ===
          operation.relationship
      ) {
        newRequestNeeded = false;
        (prevRequest as AddToRelatedRecordsRequest).relatedRecords.push(
          cloneRecordIdentity(operation.relatedRecord)
        );
      }
    }

    if (newRequestNeeded) {
      request = OperationToRequestMap[operation.op](operation);
    }

    if (request) {
      let options = requestProcessor.customRequestOptions(transform);
      if (options) {
        request.options = options;
      }
      requests.push(request);
      prevRequest = request;
    }
  });
开发者ID:orbitjs,项目名称:orbit.js,代码行数:67,代码来源:transform-requests.ts

示例9: deepGet

    let relationships = deepGet(record, ['relationships', operation.relationship, 'data']);
    if (relationships) {
      relationships.push(operation.relatedRecord);
    } else {
      deepSet(record, ['relationships', operation.relationship, 'data'], [operation.relatedRecord]);
    }
    source.putRecord(record);
  },

  removeFromRelatedRecords(source: Source, operation: RemoveFromRelatedRecordsOperation) {
    let record: Record = source.getRecord(operation.record);
    if (record) {
      let relationships = deepGet(record, ['relationships', operation.relationship, 'data']) as RecordIdentity[];
      if (relationships) {
        for (let i = 0, l = relationships.length; i < l; i++) {
          if (equalRecordIdentities(relationships[i], operation.relatedRecord)) {
            relationships.splice(i, 1);
            break;
          }
        }
        return source.putRecord(record);
      }
    }
  },

  replaceRelatedRecords(source: Source, operation: ReplaceRelatedRecordsOperation) {
    let record: Record = source.getRecord(operation.record) || cloneRecordIdentity(operation.record);
    deepSet(record, ['relationships', operation.relationship, 'data'], operation.relatedRecords);
    source.putRecord(record);
  },
开发者ID:SmuliS,项目名称:orbit.js,代码行数:30,代码来源:transform-operators.ts

示例10: equalRecordIdentities

 (rel: any) =>
   !(
     equalRecordIdentities(rel.record, relationship.record) &&
     rel.relationship === relationship.relationship
   )
开发者ID:orbitjs,项目名称:orbit.js,代码行数:5,代码来源:example-async-record-cache.ts


注:本文中的@orbit/data.equalRecordIdentities函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。