當前位置: 首頁>>代碼示例>>TypeScript>>正文


TypeScript graphql-relay.nodeDefinitions函數代碼示例

本文整理匯總了TypeScript中graphql-relay.nodeDefinitions函數的典型用法代碼示例。如果您正苦於以下問題:TypeScript nodeDefinitions函數的具體用法?TypeScript nodeDefinitions怎麽用?TypeScript nodeDefinitions使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。


在下文中一共展示了nodeDefinitions函數的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。

示例1: catch

import * as GQL from 'graphql'
import * as db from '../models'
import * as R from 'graphql-relay'

const nodeDefinitions = R.nodeDefinitions(globalId => {
    const modelTypes = ['User', 'Message']
    const idInfo = R.fromGlobalId(globalId)
    const typeIndex = modelTypes.indexOf(idInfo.type)
    if (typeIndex !== -1) { return db[modelTypes[typeIndex]].get(idInfo.id).run() }
    return null
})

/**********************************************************************/
/*                         MODEL DEFINITIONS                          */
/**********************************************************************/
//============================== MESSAGE ================================//
const MessageType = new GQL.GraphQLObjectType({
    name: 'Message',
    isTypeOf: (obj): boolean => {
        try { new db.Message(obj).validate(); return true } catch (e) { return false }
    },
    fields: (): GQL.GraphQLFieldConfigMap => ({
        id: R.globalIdField('Message'),
        userId: { type: new GQL.GraphQLNonNull(GQL.GraphQLString) },
        createdAt: { type: GQL.GraphQLString },
        body: { type: GQL.GraphQLString },
        user: {
            type: UserType,
            resolve: async (msg, args): Promise<any> => await db.User.get(msg.userId).run()
        }
    }),
開發者ID:duataud,項目名稱:PlayApp,代碼行數:31,代碼來源:mainSchema.ts

示例2: GraphQLObjectType

        }
    }),
});
// Object Identification
// nodeDefinitions returns the Node interface that objects can implement, and returns the node root field to include on the query type.
// To implement this, it takes a function to resolve an ID to an object, and to determine the type of a given object.
const resolver: GraphQLTypeResolver<any, any> = () => {
    return new GraphQLObjectType({
        name: "T",
        fields: {},
    });
};
const idFetcher = (id: string, context: number, info: GraphQLResolveInfo) => {
    info.fieldName = "f";
};
const nodeDef = nodeDefinitions<number>(idFetcher, resolver);
const fieldConfig: GraphQLFieldConfig<any, any> = nodeDef.nodeField;
const interfaceType: GraphQLInterfaceType = nodeDef.nodeInterface;
// toGlobalId takes a type name and an ID specific to that type name, and returns a "global ID" that is unique among all types.
toGlobalId("t", "i").toLowerCase();
// fromGlobalId takes the "global ID" created by toGlobalID, and returns the type name and ID used to create it.
const fgi = fromGlobalId("gid");
fgi.id.toLowerCase();
fgi.type.toUpperCase();
// globalIdField creates the configuration for an id field on a node.
const idFetcher2 = (object: any, context: any, info: GraphQLResolveInfo) => {
    return "";
};
const gif: GraphQLFieldConfig<any, any> = globalIdField("t", idFetcher2);
// pluralIdentifyingRootField creates a field that accepts a list of non-ID identifiers (like a username) and maps them to their corresponding objects.
const input: GraphQLInputType = GraphQLString;
開發者ID:EmmaRamirez,項目名稱:DefinitelyTyped,代碼行數:31,代碼來源:graphql-relay-tests.ts

示例3: if

  } else if (global.type === 'User') {
    return await context.db.collection('users').find({ _id: new ObjectID(global.id) }).limit(1).next();

  }
  return null;

}

export let nodeDefs: GraphQLNodeDefinitions = nodeDefinitions(
  idFetcher,
  (obj) => {
    if (obj instanceof Store) {
      return storeType;

    } else if (obj.cross) {
      return seedType;

    } else if (obj.email) {
      return userType;
    }
    return null;
  }

);

userType = new GraphQLObjectType(new UserTypeConfig().getConfig());
export let userConnection: GraphQLConnectionDefinitions = connectionDefinitions({
  name: 'user',
  nodeType: userType
});

開發者ID:pjayala,項目名稱:labseed,代碼行數:30,代碼來源:type.ts


注:本文中的graphql-relay.nodeDefinitions函數示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。