Koa2是一个node版web框架,有了它我们就可以不需要php等等去搞一个后台了。当然不得不说的是现在好像很多服务提供商所提供的node支持版服务器都好贵哦,估计这也是导致很多人不能完成node web的开发部署的原因之一了。

不说太远了,我们先来用koa2搭建一个web服务吧。

安装Koa2

我们先来创建一个项目目录,然后再来安装Koa2及router:

1
2
3
4
$ mkdir [program-name]
$ cd [program-name]
$ yarn init
$ yarn add koa2 koa-router

好了,我们根据Koa2的官方demo启动一个web server。

启动server

新建一个server.js文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const Koa = require('koa');
const Router = require('koa-router');
const router = new Router();
const Server = new Koa();

router.get('/api/test', (ctx, next) => {
ctx.body = {
status: 1000,
data: {
info: '接口返回信息'
}
};
});

Server.use(router.routes());
Server.listen(3000);

好了,然后我们用node来执行这个js文件:

1
$ node server.js

这个时候,你打开浏览器浏览器,然后访问localhost:3000/api/test就可以看到返回的json数据了。

嗯,基本的服务和接口我们已经做好了。

看过我之前写的用nodemon来执行文件吗?简直是比方便面还方便哦。戳这里看《使用nodemon自动重启node服务》。

连接MongoDB数据库

我们先打开命令窗口,先在数据库里面创建对应的集合和文档(MongoDB里面是这样叫的):

1
2
3
4
$ mongod
$ use test
$ db.createCollections('post')
$ db.post.insert({title: '第一篇文章', author: 'test', content: '第一篇文章内容', date: Math.floor(new Date().getTime() / 1000)})

好了,我们在post集合里面插入了一篇文章数据,下面我们再配置koa2连接到MongoDB数据库,这里我们需要的工具是monk:

1
$ yarn add monk

然后我们再来修改一下server.js:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
const Koa = require('koa');
const Router = require('koa-router');
const db = require('monk')('localhost:27017/test'); // 连接MongoDB的test数据库
const router = new Router();
const Server = new Koa();

router.get('/api/test', async (ctx, next) => {
const collection = db.get('post');
await collection.find({}).then(docs => {
db.close();
ctx.body = {
status: 1000,
lists: docs
};
}).catch(() => {
db.close();
ctx.body = {
status: 1001,
data: {
info: '出错了'
}
};
});
});

Server.use(router.routes());
Server.listen(3000);

保存,然后我们再来运行一下node server.js,然后刷新一下浏览器的地址,你会看到已经输出了刚才我们在post集合里面插入的第一篇文档。

monk的更多文档信息可以点这里去看官方文档