资讯专栏INFORMATION COLUMN

koa搭建node服务

biaoxiaoduan / 289人阅读

摘要:介绍使用搭建服务并连接返回前端数据项目初始化首先保证你的环境已经就绪创建项目文件夹创建文件夹,在文件夹中右键在此处运行命令行运行安装依赖创建服务在项目文件中创建一个文件在项目跟目录运行浏览器地址输入返回表示一次对话的上下文包括请求

介绍
使用koa搭建node服务 并连接mongodb返回前端数据
git https://gitee.com/wjj0720/koa...
项目初始化
首先保证你的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 };
    }
  };

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/19349.html

相关文章

  • iKcamp团队制作|基于Koa2搭建Node.js实战项目教学(含视频)☞ 环境准备

    安装搭建项目的开发环境 视频地址:https://www.cctalk.com/v/15114357764004 showImg(https://segmentfault.com/img/remote/1460000012470016?w=1214&h=718); 文章 Koa 起手 - 环境准备 由于 koa2 已经开始使用 async/await 等新语法,所以请保证 node 环境在 7.6...

    bang590 评论0 收藏0
  • 从零开始搭建React同构应用(四):搭建Koa Server & 完善SSR

    摘要:从零开始搭建同构应用四搭建完善上一篇我们使用了的方式测试了,这篇文章来讲如何在前文的基础上搭建一个,实现真正意义上的。至此,一个简单的框架已经搭建完成,剩下的工作就是结合工作需要,在里面添砖加瓦啦。 从零开始搭建React同构应用(四):搭建Koa Server & 完善SSR 上一篇我们使用了CLI的方式测试了SSR,这篇文章来讲如何在前文的基础上搭建一个Koa Server,实现真...

    fizz 评论0 收藏0
  • Koa2微信公众号开发(一) 本地开发调试环境搭建

    摘要:本篇是该系列的第一篇,本地开发环境搭建以及接入微信。若确认此次请求来自微信服务器,原样返回参数内容,则接入生效,成为开发者成功,否则接入失败。 一、简介 关于微信公众号的介绍就省略了,自行搜索。注册过程也不说了。我们会直接注册测试号来实现代码。这将会是个全面讲解微信公众号开发的系列教程。本篇是该系列的第一篇,本地开发环境搭建以及接入微信。在开始之前最好去看看开发者文档微信公众平台技术文...

    snifes 评论0 收藏0
  • iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 视图Nunjucks

    视频地址:https://www.cctalk.com/v/15114923888328 showImg(https://segmentfault.com/img/remote/1460000012744407?w=1602&h=966); 视图 Nunjucks 彩虹是上帝和人类立的约,上帝不会再用洪水灭人。 客户端和服务端之间相互通信,传递的数据最终都会展示在视图中,这时候就需要用到『模板引擎...

    whlong 评论0 收藏0
  • EDU_BOOK 开发总结

    摘要:开发总结整体框架搭建是目前世界最火的框架,无论从性能,还是流程控制上,和它的后宫中间件都是非常好的解决方案。 EDU_BOOK 开发总结 KOA2 + Mongodb 整体框架搭建API Koa2是目前Node.js世界最火的web框架,无论从性能,还是流程控制上,koa 2和它的后宫(中间件)都是非常好的解决方案。本文主要koa 2的文档解读和runkoa介绍,让大家对koa 2有一...

    Yumenokanata 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<