0.0.29 • Published 7 years ago

schema-query v0.0.29

Weekly downloads
3
License
ISC
Repository
-
Last release
7 years ago

graphql-query

Cài module:

$ npm install --save schema-query

I. Tạo chuỗi query

import {SchemaQuery} from '@graphql/schema-query';
var schemaQuery = new SchemaQuery({schema: schemaJson});

var query = schemaQuery.mutation.sendChatMessageQuery({conversation_id: 1, sender: {uid: 1}, content: 'test', type: 'chat'});

// query =($conversation_id: ID!, $sender: UserInput, $content: String!, $type: String){response: sendChatMessage(conversation_id: $conversation_id, sender: // $sender, content: $content, type: $type)}

Options:

  • schema: GraphQLSchema dạng JSON

II. Tạo api sử dụng ở client

import {SchemaApi} from '@graphql/schema-query';
var schemaApi = new SchemaApi({schema: schemaJson});

var query = schemaApi.mutation.sendChatMessage({
    url, 
    headers,
    params: {
        conversation_id: 1, 
        content: 'hi'
    }, 
    response
});

Options:

  • schema: GraphQLSchema dạng JSON

III. Sử dụng graphql dạng middleware trong express

import express from 'express';
import bodyParser  from 'body-parser';
import {SchemaRestApi} from '@graphql/schema-query';
import schema from './schema';

let app = express();
let jsonParser = bodyParser.json()
let schemaRestApi = new SchemaRestApi({schema, middleware: true}, () => {

    app.post('/sendMessage', jsonParser, this.mutation.sendChatMessage((req) => {
		return {
			rootValue: {user: req.data_.user, app: req.data_.app}, // data_ được gán ở middleware nào đó
			response: '{message_id, content, createdAt, updatedAt}',
			ignoreData: true
		};
	}));
	
	app.listen(8000);
});

Options:

+ SchemaRestApi:
  • schema: GraphQLSchema
  • middleware: Nếu true, Tạo api ở dạng middware
+ middleware options: Có thể ở dạng object hoặc function. Nếu ở dạng function thì cần trả về options object
  • rootValue: root param trong hàm resolve của graphql
  • response: Định dạng response trong graphql
  • ignoreData: Không trả về trường data
  • formatParam: Hàm tùy chọn dùng để định dạng variables của graphql excute. Nếu không có thì variables mặc định là req.query(GET) hoặc req.body (POST)