LoginSignup
9
9

More than 5 years have passed since last update.

OpenShiftでMEAN Stackを試してみた

Last updated at Posted at 2014-05-19

OpenShiftでMEAN Stackを試してみたときのメモです。

MEANといいなが、AngularJSは、まだです....
MongoDBとの接続は、mongooseを使っています。
OpenShiftへのサインインや開発環境整備については、割愛します。

フォルダ構成

フォルダ構成は、以下のとおりです。
OpenShiftから、git clone した後、

  • npm にて、必要パッケージのインストール
  • package.json の修正
  • server.js の修正
  • app/models/bear.js の追加

を行っています。
01.PNG

package.jsonの設定

package.json は、こんな感じです。

package.json
{
  "name": "itheart-openshift-sample",
  "version": "1.0.0",
  "description": "OpenShift Sample Application MEAN stack",
  "keywords": [
    "OpenShift",
    "Node.js",
    "application",
    "openshift"
  ],
  "author": {
    "name": "itheart",
    "email": "youritheart@gmail.com",
    "url": "http://www.itheart.com/"
  },
  "engines": {
    "node": ">= 0.6.0",
    "npm": ">= 1.0.0"
  },
  "dependencies": {
    "express": "4.0.0",
    "mongoose": "3.6.20",
    "body-parser":  "1.0.2"
  },
  "devDependencies": {},
  "bundleDependencies": [],
  "private": true,
  "main": "server.js",
  "jshintConfig": {
    "node": true
  }
}


server.jsの内容

server.jsは、こんな感じです。

server.js
// server.js

// BASE SETUP
// =============================================================================

// call the packages we need
/*jslint node: true */
var express    = require('express');        // call express
var app        = express();                 // define our app using express
var bodyParser = require('body-parser');
var mongoose   = require('mongoose');
var Bear       = require('./app/models/bear');

var connection_string = '127.0.0.1:27017/' + process.env.OPENSHIFT_APP_NAME;

if (process.env.OPENSHIFT_MONGODB_DB_URL) {
    connection_string = process.env.OPENSHIFT_MONGODB_DB_URL +
    process.env.OPENSHIFT_APP_NAME;
}

mongoose.connect(connection_string);


// configure app to use bodyParser()
// this will let us get the data from a POST
app.use(bodyParser());

var ipaddress = process.env.OPENSHIFT_NODEJS_IP;
var port = process.env.OPENSHIFT_NODEJS_PORT || 8080;        // set our port

// ROUTES FOR OUR API
// =============================================================================
var router = express.Router();              // get an instance of the express Router

// test route to make sure everything is working (accessed at GET http://localhost:8080/api)
router.get('/', function(req, res) {
    res.json({ message: 'hooray! welcome to our api!' });   
});

router.route('/bears')
    .post(function(req, res) {

        var bear = new Bear();
        bear.name = req.body.name;

        bear.save(function(err){
            if (err)
                res.send(err);

            res.json({ message: 'Bear Create!' });
        });
    })

    .get(function(req, res) {
        Bear.find(function(err, bears) {
            if (err)
                res.send(err);

            res.json(bears);
        });
    });

router.route('/bears/:bear_id')
    .get(function(req, res) {
        Bear.findById(req.params.bear_id, function(err, bear) {
            if (err)
                res.send(err);

            if (bear)
                res.json(bear);
            else
                res.json({ message: req.params.bear_id + ' is not found!' });
        });
    })

    .put(function(req, res) {
        Bear.findById(req.params.bear_id, function(err, bear) {
            if (err)
                res.send(err);

            if (bear) {
                bear.name = req.body.name;

                bear.save(function(err){
                    if (err)
                        res.send(err);

                    res.json({ message: 'Bear Update!' });
                });
            } else {
                res.json({ message: req.params.bear_id + ' is not found!' });
            }
        });
    })

    .delete(function(req, res) {
        Bear.remove({
            _id: req.params.bear_id
        }, function(err, bear) {
            if (err)
                req.send(err);

            if (bear)
                res.json({ message: 'Bear Delete!' });
            else
                res.json({ message: req.params.bear_id + ' is not found!' });
        });

    });

// more routes for our API will happen here

// REGISTER OUR ROUTES -------------------------------
// all of our routes will be prefixed with /api
app.use('/api', router);
app.use(express.static(__dirname + '/public'));

// START THE SERVER
// =============================================================================
app.listen(port, ipaddress);
console.log('Magic happens on port ' + port);


bear.jsの内容

bear.jsは、こんな感じです。

app/models/bear.js
var mongoose = require('mongoose');
var Schema   = mongoose.Schema;

var BearSchema = new Schema({
    name: String
});

module.exports = mongoose.model('Bear', BearSchema);


postmanによる確認

Postmanにて確認した結果は、以下のとおりです。

/api/bears - GET


次は...

AngularJSを構築予定です...

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9