寫一個GraphQL的小demo
原教程(https://juejin.im/post/5a49e5ccf265da430d585cfd),本帖主要記錄遇到的坑以及暫時的解決方法,順便為以後的更新做準備
github倉庫 項目已更新babel版本,可以編譯es6了
原教程
原教程寫的挺好,使得我一個從來沒接觸GraphQL的人可以初步搭建一個小的demo,友善以後的進一步學習
坑
es6(更改babel版本後解決)
看教程首先就會先處理import以及export的es6識别問題,于是按照教程建立start.js檔案,安裝babel-polyfill,運作發現出錯,指令行報Error: Cannot find module ‘babel-core/register’,google了一下,可能是版本問題,也有說要安裝@babel-core的。但是,最後還是沒有成功,目前是将原教程中的es6子產品部分寫成了es5的(import =》require,export =》module.exports)。這兩天用webpack或者gulp編譯吧。
mongodb
(1)在運作一次程式之後,ctrl+c關閉,下一次再運作的時候,報DeprecationWarning: current URL string parser is deprecated錯誤,在github中找到解決方法,在連接配接mongodb的時候,加上第二個參數
mongoose.connect(config.dbPath, { useNewUrlParser: true })
(2)第一次使用mongodb需要先自己指令行配置并開啟
GraphQL
(1)先說說教程中使用的graphql-server-koa子產品,我發現現在這個子產品更新了,現在叫apollo-server-koa,原子產品已經停止更新了,看了下新的工具,和原來代碼不是很相似,是以做demo的時候我就沒有換,還是使用原來的子產品。
(2) 在我搭建好graphiql界面後,運作graphql查詢語句後,指令行會報TypeError: ID cannot represent value:錯誤,且查詢出來的_id字段值全為null。在我把查詢語句中_id字段删除之後,錯誤消失,應該是因為哪裡不允許查詢id吧。
js
最後就是教程的一點小坑了,按照教程寫的話,在前端js裡面,ajax的success函數中res裡面應該沒有data參數,而是student和course參數。
之後的更新
(1)es5 =》 es6 (解決)
(2)graphql-server-koa =》 apollo-server-koa
(3)demo =》 有意義的程式
(4)前端采用rax(本意是學習rax的) rax-script的webpack打包graphql出錯,隻能暫時用react學習
github位址
react_graphQL_demo的basics分支
是一個小demo,以後會按照更新路線慢慢完善的,希望可以成為一個rax react+graphql的入門demo。本文章隻供初學者了解基礎GraphQL,一起進步。
react + apllo-server + prisma的入門文章位址:
react+apollo+prisma簡單demo搭建—1、Frontend開始