如何将简单的对象类型1(如接口/类)从GraphQL模式定义生成到Dart?
将GraphQL转换为类型记录示例
给定这个模式定义
type Person {
age: Int
name: String!
}运行此脚本
import { GraphQLDefinitionsFactory } from '@nestjs/graphql';
import { join } from 'path';
const definitionsFactory = new GraphQLDefinitionsFactory();
definitionsFactory.generate({
typePaths: ['./**/*.graphql'],
path: join(process.cwd(), './class.ts'),
outputAs: 'class'
});
definitionsFactory.generate({
typePaths: ['./src/**/*.graphql'],
path: join(process.cwd(), './interface.ts'),
outputAs: 'interface'
});输出
export interface Person {
age?: number;
name: string;
}export class Person {
age?: number;
name: string;
}1:简单对象类型应该是简单的普通对象类型,不需要注释、编码和解码逻辑等2:https://github.com/gql-dart/gql。
发布于 2020-07-06 04:12:52
我个人曾尝试使用阿耳特弥斯,或者希望阿波罗能够扩展业务,但@Ryosuke的dart是直截了当的。
如果您已经有了一个已经启动并运行模式的GraphQL端点,您只需要设置它的graphql_config.yaml,例如:
package_name: example
graphql_endpoint: http://example.com/graphql
models_directory_path: lib/graphql/models/给定模式定义
type Person {
age: Int
name: String!
}.dart输出
class Person{
int age;
String name;
Person({
this.age,this.name
});
Person.fromJson(Map<String, dynamic> json){
age = json['age'];
name = json['name'];
}
Map toJson(){
Map _data = {};
_data['age'] = age;
_data['name'] = name;
return _data;
}
}使用附加选项type_override,您可以根据自己的喜好设置自定义标量类型。
编辑:
现在有一个扩充版作为按下。在没有导入路径冲突的情况下,通过选择退出选项lib/在dynamic_import_path: false之外生成它们。
type_override键也不再需要用小写显式编写。
https://stackoverflow.com/questions/62590497
复制相似问题