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


TypeScript ModelManager.hydrate方法代码示例

本文整理汇总了TypeScript中rev-models.ModelManager.hydrate方法的典型用法代码示例。如果您正苦于以下问题:TypeScript ModelManager.hydrate方法的具体用法?TypeScript ModelManager.hydrate怎么用?TypeScript ModelManager.hydrate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在rev-models.ModelManager的用法示例。


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

示例1:

 /**
  * @private
  */
 async create<T extends IModel>(manager: ModelManager, model: T, options: ICreateOptions, result: ModelOperationResult<T, ICreateMeta>): Promise<ModelOperationResult<T, ICreateMeta>> {
     const meta = manager.getModelMeta(model);
     const data = this._buildGraphQLModelData(manager, meta, model);
     const mutationName = meta.name + '_create';
     const query = {
         mutation: {
             [mutationName]: {
                 __args: {
                     model: data
                 }
             }
         }
     };
     const httpResult = await this._getGraphQLQueryResult(query);
     if (!httpResult.data.data
         || !httpResult.data.data[mutationName]) {
         throw this._createHttpError('GraphQL response did not contain the expected operation results', httpResult);
     }
     const createResult: ModelOperationResult<any, ICreateMeta> = httpResult.data.data[mutationName];
     result.success = createResult.success;
     result.validation = createResult.validation;
     if (createResult.result) {
         result.result = manager.hydrate(meta.ctor, createResult.result);
     }
     return result;
 }
开发者ID:RevFramework,项目名称:rev-framework,代码行数:29,代码来源:backend.ts

示例2: if

    /**
     * @private
     */
    async create<T extends IModel>(manager: ModelManager, model: T, params: ICreateParams, result: ModelOperationResult<T, ICreateMeta>): Promise<ModelOperationResult<T, ICreateMeta>> {
        const meta = manager.getModelMeta(model);

        const document: IKeyMap<number> = {};
        let fieldList = Object.keys(meta.fieldsByName);
        for (let fieldName of fieldList) {
            let field = meta.fieldsByName[fieldName];
            if (field.options.stored) {
                if (field instanceof fields.AutoNumberField
                        && typeof model[fieldName] == 'undefined') {
                    document[fieldName] = await this._getNextAutoNumberValue(meta.name, fieldName);
                }
                else if (typeof model[fieldName] != 'undefined') {
                    let value = field.toBackendValue(manager, model[fieldName]);
                    if (typeof value != 'undefined') {
                        document[fieldName] = value;
                    }
                }
            }
        }

        const colName = this._getCollectionName(meta);
        const createResult = await this.db.collection(colName).insertOne(document);
        if (createResult.insertedCount != 1) {
            throw new Error('mongodb insert failed'); // TODO: Something nicer
        }

        result.result = manager.hydrate(meta.ctor, document);
        return result;
    }
开发者ID:RevFramework,项目名称:rev-framework,代码行数:33,代码来源:backend.ts

示例3: _hydrateRecordWithRelated

    private _hydrateRecordWithRelated(manager: ModelManager, meta: IModelMeta<any>, recordData: any, related?: string[]) {
        const model = manager.hydrate(meta.ctor, recordData);
        if (related) {
            const relFieldNames = getOwnRelatedFieldNames(related);
            meta.fields.forEach((field) => {
                if (relFieldNames.indexOf(field.name) > -1 && typeof recordData[field.name] != 'undefined') {

                    const relMeta = manager.getModelMeta(field.options.model);
                    const childRelFieldNames = getChildRelatedFieldNames(field.name, related);

                    if (field instanceof fields.RelatedModelField) {
                        if (recordData[field.name] == null) {
                            model[field.name] = null;
                        }
                        else {
                            model[field.name] = this._hydrateRecordWithRelated(manager, relMeta, recordData[field.name], childRelFieldNames);
                        }
                    }
                    else if (field instanceof fields.RelatedModelListField && recordData[field.name] instanceof Array) {
                        model[field.name] = [];
                        recordData[field.name].forEach((record: any) => {
                            model[field.name].push(this._hydrateRecordWithRelated(manager, relMeta, record, childRelFieldNames));
                        });
                    }
                }
            });
        }
        return model;
    }
开发者ID:RevFramework,项目名称:rev-framework,代码行数:29,代码来源:backend.ts

示例4:

        records.forEach((record) => {

            const modelInstance = manager.hydrate(meta.ctor, record);
            result.results!.push(modelInstance);

            if (meta.primaryKey) {
                primaryKeyValues.push(modelInstance[meta.primaryKey]);
            }

            // TODO: Refactor this into a method shared with InMemoryBackend (and future backends)
            if (relatedFieldNames) {
                for (let fieldName of relatedFieldNames) {
                    let field = meta.fieldsByName[fieldName];
                    let keyValue = record[fieldName];
                    if (field instanceof fields.RelatedModelField) {
                        if (!(fieldName in foreignKeyValues)) {
                            foreignKeyValues[fieldName] = [];
                        }
                        if (typeof keyValue != 'undefined' && keyValue !== null) {
                            modelInstance[fieldName] = keyValue;
                            if (foreignKeyValues[fieldName].indexOf(keyValue) == -1) {
                                foreignKeyValues[fieldName].push(keyValue);
                            }
                        }
                        else {
                            modelInstance[fieldName] = null;
                        }
                    }
                }
            }

            if (params.rawValues) {
                let rawValueObj: IRawValueRow = {};
                for (let fieldName of params.rawValues) {
                    rawValueObj[fieldName] = record[fieldName];
                }
                rawValues.push(rawValueObj);
            }
        });
开发者ID:RevFramework,项目名称:rev-framework,代码行数:39,代码来源:backend.ts


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