成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

koa搭建node服務(wù)

biaoxiaoduan / 414人閱讀

摘要:介紹使用搭建服務(wù)并連接返回前端數(shù)據(jù)項(xiàng)目初始化首先保證你的環(huán)境已經(jīng)就緒創(chuàng)建項(xiàng)目文件夾創(chuàng)建文件夾,在文件夾中右鍵在此處運(yùn)行命令行運(yùn)行安裝依賴創(chuàng)建服務(wù)在項(xiàng)目文件中創(chuàng)建一個(gè)文件在項(xiàng)目跟目錄運(yùn)行瀏覽器地址輸入返回表示一次對(duì)話的上下文包括請(qǐng)求

介紹
使用koa搭建node服務(wù) 并連接mongodb返回前端數(shù)據(jù)
git https://gitee.com/wjj0720/koa...
項(xiàng)目初始化
首先保證你的node環(huán)境已經(jīng)就緒

1、創(chuàng)建項(xiàng)目文件夾

創(chuàng)建文件夾test,在文件夾中shift+右鍵 在此處運(yùn)行命令行
運(yùn)行 npm init --y

2、 安裝依賴

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

創(chuàng)建服務(wù)
// server.js
/*
 * 1、在項(xiàng)目文件中創(chuàng)建一個(gè)server.js文件
 * 2、在項(xiàng)目跟目錄運(yùn)行 node server.js
 * 3、瀏覽器地址輸入 http://127.0.0.1:3001/  返回 your server run seccess
 */
const Koa = require("koa");

const app = new Koa();

// ctx表示一次對(duì)話的上下文(包括 HTTP 請(qǐng)求和 HTTP 回復(fù))
app.use(ctx => {
  ctx.body = "your server run seccess"
})

// 監(jiān)聽3001端口
app.listen(3001, () => {
  console.log("server run on 127.0.0.1:3001");
});
路由使用
/*
 * 1、創(chuàng)建routers文件夾 文件夾下的每個(gè)目錄都將是一個(gè)訪問的處理
 * 2、routers文件夾 創(chuàng)建一個(gè)demo文件夾并擁有index.js
 * 3、在routers文件夾下創(chuàng)建routers.js 用戶集中路由
 * 目錄結(jié)構(gòu)
  -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創(chuàng)建好的
let router = require("./router.js");

const app = new Koa();

// 解析post請(qǐng)求體
app.use(koaBody());

// 設(shè)置跨域 用不用插件都可
app.use(async (ctx, next) => {
  ctx.set("Access-Control-Allow-Origin", "*");
  return next();
});
// app.use(cors())

// 路由掛載
app.use(router.routes());

// 靜態(tài)文件處理
app.use(static(path.join(__dirname)))


// 監(jiān)聽3001端口
app.listen(3001, () => {
  console.log("server run on 127.0.0.1:3001");
});
// -------server.js 結(jié)束----------

// ------- 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  結(jié)束 ------

// ------ 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) {
    // 拿到請(qǐng)求輸入
    let params = ctx.request.body;
    
    // 業(yè)務(wù)邏輯處理
    console.log(params);

    // 返回前端數(shù)據(jù)
    ctx.body = { res: "SUCCESS", data: "", code: 2000 };
  }
};

// ------ routers/demo/index.js  end -----

// node server 訪問 http://127.0.0.1:3001//demo/returnsomething
mongodb 連接
  /*
   * 1、首先我們?cè)趕erver.js同級(jí)目錄創(chuàng)建utils目錄 并創(chuàng)建connect.js 用公共方法的封裝
  */
  // --- utils/connect.js---
  // 安裝依賴 npm i mongodb assert
  const MongoClient = require("mongodb").MongoClient;
  const assert = require("assert");

  // Connection URL mongo服務(wù)地址
  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();
      }
    );
  };
  // 封裝一個(gè)向mongo插入多條數(shù)據(jù)的方法
  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);
            }
        });
      });
    });
  };
  // 封裝一個(gè)查找數(shù)據(jù)庫的方法
  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 -------

  // 在路由中調(diào)用
  // ---- routers/dome/index.js ---- 
  const { findMany } = require("../../utils/connect");
  module.exports = {
    path: "/servers/addapi",
    async handle(ctx, next) {
      let params = ctx.request.body;
      
      // 查找數(shù)據(jù)庫 返回值 參數(shù):表明, 條件
      let res = await findMany("user", {});
      console.log(res);

      ctx.body = { res: "SUCCESS", data: res, code: 2000 };
    }
  };

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/19349.html

相關(guān)文章

  • iKcamp團(tuán)隊(duì)制作|基于Koa2搭建Node.js實(shí)戰(zhàn)項(xiàng)目教學(xué)(含視頻)? 環(huán)境準(zhǔn)備

    安裝搭建項(xiàng)目的開發(fā)環(huán)境 視頻地址:https://www.cctalk.com/v/15114357764004 showImg(https://segmentfault.com/img/remote/1460000012470016?w=1214&h=718); 文章 Koa 起手 - 環(huán)境準(zhǔn)備 由于 koa2 已經(jīng)開始使用 async/await 等新語法,所以請(qǐng)保證 node 環(huán)境在 7.6...

    bang590 評(píng)論0 收藏0
  • 從零開始搭建React同構(gòu)應(yīng)用(四):搭建Koa Server & 完善SSR

    摘要:從零開始搭建同構(gòu)應(yīng)用四搭建完善上一篇我們使用了的方式測(cè)試了,這篇文章來講如何在前文的基礎(chǔ)上搭建一個(gè),實(shí)現(xiàn)真正意義上的。至此,一個(gè)簡單的框架已經(jīng)搭建完成,剩下的工作就是結(jié)合工作需要,在里面添磚加瓦啦。 從零開始搭建React同構(gòu)應(yīng)用(四):搭建Koa Server & 完善SSR 上一篇我們使用了CLI的方式測(cè)試了SSR,這篇文章來講如何在前文的基礎(chǔ)上搭建一個(gè)Koa Server,實(shí)現(xiàn)真...

    fizz 評(píng)論0 收藏0
  • Koa2微信公眾號(hào)開發(fā)(一) 本地開發(fā)調(diào)試環(huán)境搭建

    摘要:本篇是該系列的第一篇,本地開發(fā)環(huán)境搭建以及接入微信。若確認(rèn)此次請(qǐng)求來自微信服務(wù)器,原樣返回參數(shù)內(nèi)容,則接入生效,成為開發(fā)者成功,否則接入失敗。 一、簡介 關(guān)于微信公眾號(hào)的介紹就省略了,自行搜索。注冊(cè)過程也不說了。我們會(huì)直接注冊(cè)測(cè)試號(hào)來實(shí)現(xiàn)代碼。這將會(huì)是個(gè)全面講解微信公眾號(hào)開發(fā)的系列教程。本篇是該系列的第一篇,本地開發(fā)環(huán)境搭建以及接入微信。在開始之前最好去看看開發(fā)者文檔微信公眾平臺(tái)技術(shù)文...

    snifes 評(píng)論0 收藏0
  • iKcamp|基于Koa2搭建Node.js實(shí)戰(zhàn)(含視頻)? 視圖Nunjucks

    視頻地址:https://www.cctalk.com/v/15114923888328 showImg(https://segmentfault.com/img/remote/1460000012744407?w=1602&h=966); 視圖 Nunjucks 彩虹是上帝和人類立的約,上帝不會(huì)再用洪水滅人。 客戶端和服務(wù)端之間相互通信,傳遞的數(shù)據(jù)最終都會(huì)展示在視圖中,這時(shí)候就需要用到『模板引擎...

    whlong 評(píng)論0 收藏0
  • EDU_BOOK 開發(fā)總結(jié)

    摘要:開發(fā)總結(jié)整體框架搭建是目前世界最火的框架,無論從性能,還是流程控制上,和它的后宮中間件都是非常好的解決方案。 EDU_BOOK 開發(fā)總結(jié) KOA2 + Mongodb 整體框架搭建API Koa2是目前Node.js世界最火的web框架,無論從性能,還是流程控制上,koa 2和它的后宮(中間件)都是非常好的解決方案。本文主要koa 2的文檔解讀和runkoa介紹,讓大家對(duì)koa 2有一...

    Yumenokanata 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<