天天看點

寫一個GraphQL的小demo寫一個GraphQL的小demo

寫一個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開始