Koa, MongoDB and Mongoose

Koa

Koa 是下一代的 Node.js 的 Web 框架。由 Express 團隊設計。旨在提供一個更小型、更富有表現力、更可靠的 Web 應用和 API 的開發基礎。

Koa可以通過生成器擺脫回調,極大地改進錯誤處理。Koa核心不綁定任何中間件,但提供了優雅的一組可以快速和愉悅地編寫服務器應用的方法。

koa相關資料: https://github.com/koajs/koa

MongoDB

使用 Mongoose 首先要了解 MongoDB

MongoDB (from “humongous”) is an open-source document database, and the leading NoSQL database. Written in C++

開源型、文檔型、NoSQL

在 sql 中,我們的數據層級是:數據庫(db) -> 表(table) -> 記錄(record)-> 字段;在 mongodb 中,數據的層級是:數據庫 -> collection -> document -> 字段。這四個概念可以對應得上。

MongoDB的安裝方法:https://docs.mongodb.com/manual/installation/

Mongoose

Mongoose 是個 odm。odm 是 Object-Document Mapping,對象文檔映射。

它的作用就是,在程序代碼中,定義一下數據庫中的數據格式,然後取數據時通過它們,可以把數據庫中的 document 映射成程序中的一個對象,這個對象有 .save .update 等一系列方法,和 .title .author 等一系列屬性。在調用這些方法時,odm 會根據你調用時所用的條件,自動轉換成相應的 mongodb shell 語句幫你發送出去。自然地,在程序中鏈式調用一個個的方法要比手寫數據庫操作語句具有更大的靈活性和便利性。

具體使用方法:https://docs.mongodb.com/manual/tutorial/query-documents/

createConnection 與 connect:

許多入門學徒在看到這兩個函數的時候都會有一定疑惑,但是這兩個函數其實並不是一個東西,

createConnection 創建的並非一個默認的數據庫連接,它返回的是一個Connection。我們需要通過這個Connection來創建Model、Instance,然後進行數據表操作,這通常是在程序需要連接多個數據庫的情況下使用,否則一般使用 connect 來打開默認的數據庫連接,這時候我們就可以用mongoose.model來創建我們的Model了。

使用Koa和MongoDB

  • 按照上述介紹,在工作站上安裝MongoDB
  • 安裝Mongoose

    • $ npm install mongoose or $ cnpm install mongoose
  • 安裝 Koa 框架,及其相關庫文件

也可以直接到Github上clone相關的開源項目,查看結果,
https://github.com/dozoisch/koa-react-full-example

1、 Mongoose 連接 Mongo 數據庫

import mongoose from 'mongoose';

// connet database
var db = mongoose.connect("mongodb://localhost:27017/myDatabase") // default port 27017

// create data model
var Schema = mongoose.Schema,
    ObjectId = Schema.Types.Objectid;
var user = new Schema({
  uid: String,
})

// instance model
var User = mongoose.model('User', user);
var user = {
  uid: 'myid',
}
var newUser = new User(user);
console.log(newUser.uid);
newUser.save();
// a database has been created;

2、結合Koa框架

// import koa framework
import Koa from 'koa';
// import routes file
import route from './routes/index.js'
const app = new Koa();
route(app);

3、Koa-router進行路由設置

// routes/index.js
import User from '../controllers/user.js';
import Router from 'koa-router'
module.exports = function (app) {
  var router = new Router();
  router.get('/users', User.list);
  app.use(router.routes());
};

4、Controller

'use strict'

import mongoose from 'mongoose'
import User from '../models/user'

exports.list = function *() {
  this.body = yield Segment.find().exec();
};

以上內容是最近在作React、Redux、Koa、MongoDB相關工作,在幫助自己記憶的同時,也希望能對新手有幫助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章