最近為了世界的發展,可能需要建個吃資料的Server,但某個兩光兩光的團隊預計半年後才會生出來,然後他們拿來當模板的 Parse 又要倒了,所幸,Parse 雖然要倒了,但很好心的把 source code release 出來,那至少先摸摸天花版長什麼樣,之後擦地版也許會比較輕鬆 (吧)
首先要安裝 Node,詳見正妹大大的大作,就不在此贅述
parse-server 後頭要接一個 mongo DB ,沒時間自己弄,先申請 Mlab (mongo db service ) 不要錢的頂著測試用
(註冊完成後,選 Create new subscription,Play 選免費的 Single-node / Sandbox , 並給他一個名字,然後利用 add-database-user 建一個可以存取這個db的帳號)
安裝 Express Generator
shell> sudo npm install express-generator -g
parse-server 可以獨立存在,也可以塞在現成的web框架裡,依教學用 express 吧,先建一個 express 的web application 專案
shell> express my-parse-server
create : my-parse-server
create : my-parse-server/package.json
create : my-parse-server/app.js
create : my-parse-server/public
create : my-parse-server/public/images
create : my-parse-server/routes
create : my-parse-server/routes/index.js
create : my-parse-server/routes/users.js
create : my-parse-server/views
create : my-parse-server/views/index.jade
create : my-parse-server/views/layout.jade
create : my-parse-server/views/error.jade
create : my-parse-server/public/stylesheets
create : my-parse-server/public/stylesheets/style.css
create : my-parse-server/bin
create : my-parse-server/bin/www
install dependencies:
$ cd my-parse-server && npm install
run the app:
$ DEBUG=my-parse-server:* npm start
create : my-parse-server/public/javascripts
create : my-parse-server
create : my-parse-server/package.json
create : my-parse-server/app.js
create : my-parse-server/public
create : my-parse-server/public/images
create : my-parse-server/routes
create : my-parse-server/routes/index.js
create : my-parse-server/routes/users.js
create : my-parse-server/views
create : my-parse-server/views/index.jade
create : my-parse-server/views/layout.jade
create : my-parse-server/views/error.jade
create : my-parse-server/public/stylesheets
create : my-parse-server/public/stylesheets/style.css
create : my-parse-server/bin
create : my-parse-server/bin/www
install dependencies:
$ cd my-parse-server && npm install
run the app:
$ DEBUG=my-parse-server:* npm start
create : my-parse-server/public/javascripts
安裝 express必要的 module (定義於 my-parse-server/package.json 中)
shell> cd my-parse-server
shell> npm install
shell> npm install
把 parse-server 的 module 掛進 express
shell> npm install parse-server --save
編輯專案根目錄下的 app.js 好讓 express 引入 parse server module
var ParseServer = require('parse-server').ParseServer;
在 app.js 中建立 parse server instance
var parseAPI = new ParseServer({ serverURL, 'http://localhost:3000/parse', databaseURI: 'mongodb://localhost:27017/dev', appId: 'parse-server-test-key', masterKey: 'mySecretMasterKey', });
其中的
serverURL : 要接收 request 的 URI
databaseURI 來自剛申請的mlab eg. mongodb://
appID : 任意字串,先用 parse-server-test-key 好了
masterKey : 任意字串
最後修改 app.js ,讓程式執行起來後 /parse 的request 會去調用剛生的parse api (好像要加在 404 前,不然會 404 XD XD )
app.use('/parse', parseAPI);
啟動你的 web (express) server
shell> npm start
可以透過 shell > lsof -i :3000 看看 node 有沒有乖乖的把你的web 開起來
測試輸入資料
curl -X POST -H "X-Parse-Application-Id: parse-server-test-key" -H "Content-Type: application/json" -d '{"score": 1337, "playerName": "tester", "cheatMode":false}' http://localhost:3000/parse/classes/GameScore
若都正確的話應該要回傳 如下
{"objectId":"sRPDHQGLjB","createdAt":"2016-03-24T08:59:38.568Z"}
而到 mLab 你建立的 db 下,應該會看到多了一個 GameScore 的Collection ,有一個 Document ,點開看後的值為
{
"_id": "sRPDHQGLjB",
"score": 1337,
"playerName": "tester",
"cheatMode": false,
"_updated_at": {
"$date": "2016-03-24T08:59:38.568Z"
},
"_created_at": {
"$date": "2016-03-24T08:59:38.568Z"
}
}
如果再執行一次 curl -X POST 並送出另一筆資料, mlab 中 GameScore 這個 collection 下的 Document 數應該要多 1
若要測試取值,可以用下面的 Command line 測試
$ curl -X GET -H "X-Parse-Application-Id: parse-server-test-key" http://localhost:3000/parse/classes/GameScore/sRPDHQGLjB
應該要回傳如下
{"objectId":"sRPDHQGLjB","score":1337,"playerName":"tester","cheatMode":false,"updatedAt":"2016-03-24T08:59:38.568Z","createdAt":"2016-03-24T08:59:38.568Z"}
接著,該把我的 BBB 板子翻出來惹.... 不對,還要先試 parse-dashboard orz
相關連結 :
簡介 : https://github.com/ParsePlatform/parse-server
指引 : https://github.com/ParsePlatform/parse-server/wiki/Parse-Server-Guide
關於 Express : http://expressjs.com/zh-tw/
p.s 如果 npm start 噴"You must provide a XXXX" ,那就在 app.js 中的 parseAPI 生成的參數中加入 XXX 及對應的值
p.s express 聽的port 預設寫在 ./bin/www 中 (var port = normalizePort(process.env.PORT || '3000');) ,想改的話可以透過 app.set('port', process.env.PORT || 8080); 的方式改掉
0 意見:
張貼留言