博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
koa搭建node服务
阅读量:6590 次
发布时间:2019-06-24

本文共 4000 字,大约阅读时间需要 13 分钟。

介绍

使用koa搭建node服务 并连接mongodb返回前端数据
git

项目初始化

首先保证你的node环境已经就绪
  • 1、创建项目文件夹

    创建文件夹test,在文件夹中shift+右键 在此处运行命令行
    运行 npm init --y
  • 2、 安装依赖

    npm i koa koa-body koa-static koa-cors

创建服务

// server.js/* * 1、在项目文件中创建一个server.js文件 * 2、在项目跟目录运行 node server.js * 3、浏览器地址输入 http://127.0.0.1:3001/  返回 your server run seccess */const Koa = require("koa");const app = new Koa();// ctx表示一次对话的上下文(包括 HTTP 请求和 HTTP 回复)app.use(ctx => {  ctx.body = "your server run seccess"})// 监听3001端口app.listen(3001, () => {  console.log("server run on 127.0.0.1:3001");});

路由使用

/* * 1、创建routers文件夹 文件夹下的每个目录都将是一个访问的处理 * 2、routers文件夹 创建一个demo文件夹并拥有index.js * 3、在routers文件夹下创建routers.js 用户集中路由 * 目录结构  -server.js  -routers    -routers.js    -demo      -index.js  -router.js*/// ----server.js 文件 ----const Koa = require("koa");const koaBody = require("koa-body");const static = require('koa-static')//const cors = require('koa-cors')// 引入router创建好的let router = require("./router.js");const app = new Koa();// 解析post请求体app.use(koaBody());// 设置跨域 用不用插件都可app.use(async (ctx, next) => {  ctx.set("Access-Control-Allow-Origin", "*");  return next();});// app.use(cors())// 路由挂载app.use(router.routes());// 静态文件处理app.use(static(path.join(__dirname)))// 监听3001端口app.listen(3001, () => {  console.log("server run on 127.0.0.1:3001");});// -------server.js 结束----------// ------- router.js -----let Router = require("koa-router");let routers = require("./routers/routers.js");let router = new Router();routers.forEach(r => {  router.all(r.path, r.handle)});module.exports = router;//  ------ server.js  结束 ------// ------ routers/routers.js  start-----let demo = require('./demo/index.js')let test = require('./test/index.js')module.exports = [  demo,  test]// ------ routers/routers.js  end -----// ------ routers/demo/index.js  start -----module.exports = {  path: "/demo/returnsomething",  async handle(ctx, next) {    // 拿到请求输入    let params = ctx.request.body;        // 业务逻辑处理    console.log(params);    // 返回前端数据    ctx.body = { res: "SUCCESS", data: '', code: 2000 };  }};// ------ routers/demo/index.js  end -----// node server 访问 http://127.0.0.1:3001//demo/returnsomething

mongodb 连接

/*   * 1、首先我们在server.js同级目录创建utils目录 并创建connect.js 用公共方法的封装  */  // --- utils/connect.js---  // 安装依赖 npm i mongodb assert  const MongoClient = require("mongodb").MongoClient;  const assert = require("assert");  // Connection URL mongo服务地址  const url = "mongodb://localhost:27017";  // Database Name 确保mongo中有test库  const dbName = "test";  // 公共的连接方法  const connect = (tableName, callback) => {    MongoClient.connect(      url,      { useNewUrlParser: true },      function(err, client) {        assert.equal(null, err);        const db = client.db(dbName);        callback(db.collection(tableName));        client.close();      }    );  };  // 封装一个向mongo插入多条数据的方法  exports.insertMany = (tableName, condition, params) => {    return new Promise((resolve, reject) => {      connect(tableName, collection => {        collection.insertMany(condition, params, (err, result) => {            if (err) {              console.log(err);              reject();            } else {              resolve(result);            }        });      });    });  };  // 封装一个查找数据库的方法  exports.findMany = (tableName, condition) => {    return new Promise((resolve, reject) => {      connect(        tableName,        collection => {          collection.find(condition).toArray((err, result) => {            if (err) {              console.log(err);              reject();            } else {              resolve(result);            }          });        }      );    });  };  // ------ end -------  // 在路由中调用  // ---- routers/dome/index.js ----   const { findMany } = require("../../utils/connect");  module.exports = {    path: "/servers/addapi",    async handle(ctx, next) {      let params = ctx.request.body;            // 查找数据库 返回值 参数:表明, 条件      let res = await findMany("user", {});      console.log(res);      ctx.body = { res: "SUCCESS", data: res, code: 2000 };    }  };

转载地址:http://yrkio.baihongyu.com/

你可能感兴趣的文章
甲骨文公布第四财季财报:净利润同比增2%
查看>>
Linux-基础-NTP服务
查看>>
Dubbo基本用法-Dubbo Provider配置
查看>>
用ASP.NET Core 2.1 建立规范的 REST API -- 翻页/排序/过滤等
查看>>
基于dropwizard/metrics ,kafka,zabbix构建应用统计数据收集展示系统
查看>>
哈默尔的核心竞争力--《可以量化的管理学》
查看>>
设计模式是什么鬼(单例)
查看>>
数据传输的加密过程
查看>>
目标检测必须要OpenCV?10行Python代码也能实现,亲测好用!
查看>>
YodaOS: 一个属于 Node.js 社区的操作系统
查看>>
GNOME Screencaster 将支持 Miracast P2P 传输
查看>>
InitAdmin 201904 更新,首创云后台概念
查看>>
各种安全问题(杂)
查看>>
Percona XtraDB Cluster GCache和Record-Set缓存
查看>>
GNOME 3.32 正式发布,代号“台北”(TAIPEI)
查看>>
科技宅告诉你,没有女朋友如何高雅的享受性趣
查看>>
重大突破!全球首个量子计算机桥诞生
查看>>
函数式编程思维在三行代码情书中的应用
查看>>
态势感知情报数据库的手机号增加灰名单
查看>>
德尔福和Mobileye强强联手,将展示双方共同开发的CSLP系统
查看>>