Giter Club home page Giter Club logo

egg-graphql-boilerplate's Introduction

egg-graphql-boilerplate

本项目是使用egg-graphql插件构建的graphql服务器

installation

git clone 
npm install 
npm run dev

在浏览器打开 http://localhost:7001/graphql

egg-graphql-boilerplate's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

egg-graphql-boilerplate's Issues

win7环境中调试 npm run dev 启动不起来

C:\GraphQL\egg-graphql-boilerplate>npm run dev

> [email protected] dev C:\GraphQL\egg-graphql-boilerplate
> egg-bin dev

2018-12-13 16:42:05,585 INFO 8300 [master] node version v10.14.0
2018-12-13 16:42:05,590 INFO 8300 [master] egg version 1.17.0
sequelize deprecated String based operators are now deprecated. Please use Symbol based operators for better security, read more at http://docs.sequelizejs.com/manual/tutorial/querying.html#operators node_modules\[email protected]@sequelize\lib\sequelize.js:242:13
2018-12-13 16:42:16,817 ERROR 4432 nodejs.SequelizeConnectionError: Unknown database 'graphql'
    at Utils.Promise.tap.then.catch.err (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@sequelize\lib\dialects\mysql\connection-manager.js:149:19)
    at tryCatcher (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\util.js:16:23)
    at Promise._settlePromiseFromHandler (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\promise.js:512:31)
    at Promise._settlePromise (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\promise.js:569:18)
    at Promise._settlePromise0 (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\promise.js:614:10)
    at Promise._settlePromises (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\promise.js:690:18)
    at _drainQueueStep (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\async.js:138:12)
    at _drainQueue (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\async.js:131:9)
    at Async._drainQueues (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\async.js:147:5)
    at Immediate.Async.drainQueues [as _onImmediate] (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\async.js:17:14)
From previous event:
    at Promise.longStackTracesCaptureStackTrace [as _captureStackTrace] (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\debuggability.js:411:19)
    at Function.Promise.attempt.Promise.try (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\method.js:29:9)
    at Promise.resolve.retryParameters (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@sequelize\lib\sequelize.js:454:64)
    at C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@retry-as-promised\index.js:39:21
    at Promise._execute (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\debuggability.js:313:9)
    at Promise._resolveFromExecutor (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\promise.js:483:18)
    at new Promise (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\promise.js:79:10)
    at retryAsPromised (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@retry-as-promised\index.js:29:10)
    at Sequelize.query (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@sequelize\lib\sequelize.js:454:28)
    at Sequelize.authenticate (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@sequelize\lib\sequelize.js:783:17)
    at authenticate (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@egg-sequelize\lib\loader.js:59:21)
    at authenticate.next (<anonymous>)
    at onFulfilled (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:65:19)
    at C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:54:5
    at new Promise (<anonymous>)
    at co (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:50:10)
    at toPromise (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:118:63)
    at next (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:99:29)
    at onFulfilled (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:69:7)
    at C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:54:5
    at new Promise (<anonymous>)
    at co (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:50:10)
    at toPromise (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:118:63)
    at next (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:99:29)
    at onFulfilled (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:69:7)
    at C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:54:5
    at new Promise (<anonymous>)
    at co (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:50:10)
name: "SequelizeConnectionError"
parent: {"code":"ER_BAD_DB_ERROR","errno":1049,"sqlState":"#42000"}
original: {"code":"ER_BAD_DB_ERROR","errno":1049,"sqlState":"#42000"}
pid: 4432
hostname: graphql

2018-12-13 16:42:16,830 ERROR 4432 nodejs.SequelizeConnectionError: Unknown database 'graphql'
    at Utils.Promise.tap.then.catch.err (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@sequelize\lib\dialects\mysql\connection-manager.js:149:19)
    at tryCatcher (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\util.js:16:23)
    at Promise._settlePromiseFromHandler (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\promise.js:512:31)
    at Promise._settlePromise (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\promise.js:569:18)
    at Promise._settlePromise0 (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\promise.js:614:10)
    at Promise._settlePromises (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\promise.js:690:18)
    at _drainQueueStep (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\async.js:138:12)
    at _drainQueue (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\async.js:131:9)
    at Async._drainQueues (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\async.js:147:5)
    at Immediate.Async.drainQueues [as _onImmediate] (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\async.js:17:14)
From previous event:
    at Promise.longStackTracesCaptureStackTrace [as _captureStackTrace] (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\debuggability.js:411:19)
    at Function.Promise.attempt.Promise.try (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\method.js:29:9)
    at Promise.resolve.retryParameters (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@sequelize\lib\sequelize.js:454:64)
    at C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@retry-as-promised\index.js:39:21
    at Promise._execute (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\debuggability.js:313:9)
    at Promise._resolveFromExecutor (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\promise.js:483:18)
    at new Promise (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@bluebird\js\release\promise.js:79:10)
    at retryAsPromised (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@retry-as-promised\index.js:29:10)
    at Sequelize.query (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@sequelize\lib\sequelize.js:454:28)
    at Sequelize.authenticate (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@sequelize\lib\sequelize.js:783:17)
    at authenticate (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@egg-sequelize\lib\loader.js:59:21)
    at authenticate.next (<anonymous>)
    at onFulfilled (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:65:19)
    at C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:54:5
    at new Promise (<anonymous>)
    at co (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:50:10)
    at toPromise (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:118:63)
    at next (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:99:29)
    at onFulfilled (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:69:7)
    at C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:54:5
    at new Promise (<anonymous>)
    at co (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:50:10)
    at toPromise (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:118:63)
    at next (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:99:29)
    at onFulfilled (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:69:7)
    at C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:54:5
    at new Promise (<anonymous>)
    at co (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@co\index.js:50:10)
name: "SequelizeConnectionError"
parent: {"code":"ER_BAD_DB_ERROR","errno":1049,"sqlState":"#42000"}
original: {"code":"ER_BAD_DB_ERROR","errno":1049,"sqlState":"#42000"}
pid: 4432
hostname: graphql

2018-12-13 16:42:16,831 ERROR 4432 [agent_worker] start error, exiting with code:1
2018-12-13 16:42:16,839 ERROR 8300 nodejs.AgentWorkerDiedError: [master] agent_worker#1:4432 died (code: 1, signal: null)
    at Master.onAgentExit (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@egg-cluster\lib\master.js:328:17)
    at Master.emit (events.js:182:13)
    at Messenger.sendToMaster (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@egg-cluster\lib\utils\messenger.js:137:17)
    at Messenger.send (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@egg-cluster\lib\utils\messenger.js:102:12)
    at ChildProcess.agentWorker.once (C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@egg-cluster\lib\master.js:219:22)
    at Object.onceWrapper (events.js:273:13)
    at ChildProcess.emit (events.js:182:13)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:240:12)
name: "AgentWorkerDiedError"
pid: 8300
hostname: graphql

2018-12-13 16:42:16,842 ERROR 8300 [master] agent_worker#1:4432 start fail, exiting with code:1
2018-12-13 16:42:16,842 ERROR 8300 [master] exit with code:1
⚠️  Error: C:\GraphQL\egg-graphql-boilerplate\node_modules\[email protected]@egg-bin\lib\start-cluster {"baseDir":"C:\\GraphQL\\egg-graphql-boil
erplate","workers":1,"framework":"C:\\GraphQL\\egg-graphql-boilerplate\\node_modules\\egg"} exit with code 1
⚠️  Command Error, enable `DEBUG=common-bin` for detail
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] dev: `egg-bin dev`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\graphql\AppData\Roaming\npm-cache\_logs\2018-12-13T08_42_16_923Z-debug.log

C:\GraphQL\egg-graphql-boilerplate>
-----------------------------------------------------------------------------------------------------------
以下为log:
0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   'run',
1 verbose cli   'dev' ]
2 info using [email protected]
3 info using [email protected]
4 verbose run-script [ 'predev', 'dev', 'postdev' ]
5 info lifecycle [email protected]~predev: [email protected]
6 info lifecycle [email protected]~dev: [email protected]
7 verbose lifecycle [email protected]~dev: unsafe-perm in lifecycle true
8 verbose lifecycle [email protected]~dev: PATH: C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin;C:\GraphQL\egg-graphql-boilerplate\node_modules\.bin;C:\Python27\;C:\Python27\Scripts;C:\ProgramData\Boxstarter;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Microsoft SQL Server\110\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\;C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\;C:\Program Files (x86)\Microsoft VS Code\bin;C:\Program Files\Lenovo\Fingerprint Manager Pro\;C:\Program Files\nodejs\;C:\ProgramData\chocolatey\bin;C:\mysql-8.0.13-winx64\bin;;C:\Program Files (x86)\Microsoft VS Code\bin;C:\Users\graphql\AppData\Roaming\npm
9 verbose lifecycle [email protected]~dev: CWD: C:\GraphQL\egg-graphql-boilerplate
10 silly lifecycle [email protected]~dev: Args: [ '/d /s /c', 'egg-bin dev' ]
11 silly lifecycle [email protected]~dev: Returned: code: 1  signal: null
12 info lifecycle [email protected]~dev: Failed to exec dev script
13 verbose stack Error: [email protected] dev: `egg-bin dev`
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\index.js:301:16)
13 verbose stack     at EventEmitter.emit (events.js:182:13)
13 verbose stack     at ChildProcess.<anonymous> (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\lib\spawn.js:55:14)
13 verbose stack     at ChildProcess.emit (events.js:182:13)
13 verbose stack     at maybeClose (internal/child_process.js:962:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:251:5)
14 verbose pkgid [email protected]
15 verbose cwd C:\GraphQL\egg-graphql-boilerplate
16 verbose Windows_NT 6.1.7601
17 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "dev"
18 verbose node v10.14.0
19 verbose npm  v6.4.1
20 error code ELIFECYCLE
21 error errno 1
22 error [email protected] dev: `egg-bin dev`
22 error Exit status 1
23 error Failed at the [email protected] dev script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]

跑例子的时候报错了

TypeError: DataLoader must be constructed with a function which accepts Array and returns Promise<Array>, but the function did not return a Promise of an Array of the same length as the Array of keys.

restful 接口

为什么还提供了restful 的接口?
在route 中
module.exports = (app) => {
app.get('/', 'home.index');
app.post('/api/auth/login', 'auth.login');
app.post('/api/auth/register', 'auth.register');
app.resources('users', '/api/users', app.controller.user);
};

可以做一个更完善点的样例吗

网上绝大部分 graphql 文档都是针对前端入门的。该模板看起来也没法继续深入。

模板提供的例子里面 dataloader 只针对 user 做了优化。

复杂的场景下,如果 item 有100条,那么就会执行至少100个 item 的查询。这看起来很不合理。如果 gql 更复杂点,那么就更无法接受了。

希望有个经典 用户 <=> 角色 <=> 权限 多对多关系的最佳实践。

进行单元测试出现如下问题:Schema must be an instance of GraphQLSchema

我用的版本如下:
"dependencies": {
"dataloader": "^1.4.0",
"egg": "^2.2.1",
"egg-graphql": "^2.1.0",
"egg-scripts": "^2.5.0",
"egg-sequelize": "^3.1.2",
"graphql": "^0.13.2",
"lodash": "^4.17.5",
"mysql2": "^1.5.3",
"npm": "^5.8.0"
},
,在执行这里的时候:
const data = yield ctx.service.graphql.query(query);
assert.equal(data.data.user.id, user.id);
assert.equal(data.data.user.name, user.name);

枚举如何在客户端写查询

enum Priority {
HIGH,
NORMAL,
LOW
}

type Item {
id: ID!
content: String!
expire: String
priority: Priority!
done: Boolean!
tags: [String!]
updated_at: Date
created_at: Date
}

mutation 的时候 想输入用定义变量怎么写?

mutation CreateUser($user: CreateUserInput!) { createUser(input: $user) { changedUser { id username } } } 类似这种 我在mutation 文件夹下定义 了
createCaughtError($caughtError:CreateCaughtErrorInput!){
createCaughtError(input:$caughtError):User
}
第一个$就提示语法错误了。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.