2016年3月24日 星期四

[記事] parse server 安裝筆記

屬於阿宅世界的技術文章,想看的再點開,切莫自誤 !




最近為了世界的發展,可能需要建個吃資料的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

安裝 express必要的 module (定義於 my-parse-server/package.json 中)
shell> cd my-parse-server
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://:@ds031561.mlab.com:31561/parse-server-db
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 意見:

張貼留言