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相关工作,在帮助自己记忆的同时,也希望能对新手有帮助。

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