zeit/micro connect with Mongo by Mongoose

Micro-Mongoose-example

Micro + Mongoose + Mongo

install packages

$ npm install micro micro-dev microrouter mongoose --save

Using Mongoose to verify the data, and save to the MongoDB.

package.json

{
  "name": "microlog",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "micro -p 5500",
    "dev": "micro-dev -p 5670",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "microrouter": "^2.2.2",
    "mongoose": "^4.11.12",
    "mpromise": "^0.5.5",
    "openssl-self-signed-certificate": "^1.1.6"
  },
  "devDependencies": {
    "micro-dev": "^1.2.2"
  }
}

Verify data

const mongoose  = require('mongoose');

var Schema = mongoose.Schema;

const LogSchema = new Schema({
  name: {
    type: String,
    required: 'Please fill Alarm name',
    trim: true
  },
  time: {
    type: String,
  },
  type: {
    type: String,
  },
  status: {
    type: String,
  },
  tag: {
    type: String,
  },
  handleTime: {
    type: String,
  },
  handler: {
    type: String,
    default: 'SCM',
  },
  description: {
    type: String,
    default: 'SystemLog'
  },
});

const initColl = () => {
  if(mongoose.models.Log) {
    return mongoose.model('Log')
  }
  else {
    return mongoose.model('Log', LogSchema);
  }
}
module.exports = initColl();

Connect with MongoDB server

const mongoose  = require('mongoose');
const url = `mongodb://localhost:27017/mean`

const connectWithDB = () => {
  mongoose.Promise = global.Promise;
  mongoose.connect(url, {useMongoClient: true})
}

module.exports = connectWithDB;

Micro Service

const { send, json } = require('micro')
const { router, get, post, del, options } = require('microrouter');

const Log = require('./model/data.js');
const connectWithDB = require('./db');

connectWithDB();

const notfound = (req, res) => {
  send(res, 404, 'Not found route')
}


const label = 'log';
const create = async (req, res) => {
  let data = await json(req)
  let lamp = new Log(data);
  console.log('create-Log---', req.query, data )
  lamp.save();
  send(res, 200,  {msg: 'create-ok'})
}

const findDatas = async (req, res) => {
  const datas = await Log.find({})
  send(res, 200, datas);
}
const findDatasByTime = async (req, res) => {
  let data = await json(req);
  const p = {'time': {'$gte': data.startTime, '$lt': data.endTime }};
  const datas = await Log.find(p);
  send(res, 200, datas);
}

module.exports = router(
  get('/loglist', findDatas),
  post('/logcreate', create),
  post('/loglist', findDatasByTime),
  get('/*', notfound),
)

運行

$ npm run dev //訪問http://localhost:5670
$ npm run start //訪問http://localhost:5500
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章