分为三个文件
mongo.js基本的封装了下mongo数据库操作
workmongo.js 里面有路由和解析操作(可以根据具体业务进行扩充)
mainmongo.js 服务器相关调用例子:查询数据
http://127.0.0.1:2323/get?k=q&n=data&c=wck&w={"y":"y"}
添加数据
http://127.0.0.1:2323/post?k=i&n=data&c=wck 具体的内容,在post的body里面,采用标准json格式就好----------------------------------------------------
mongo.js
const { MongoClient, ObjectId } = require('mongodb');
const mongourl = "mongodb://localhost:27017/";const findMongo = (dbname, collection, where, req, res) => {MongoClient.connect(mongourl, { useNewUrlParser: true, useUnifiedTopology: true }, function (err, client) {if (err) throw err;const db = client.db(dbname);db.collection(collection).find(where).sort({ uptime: -1 }).toArray(function (err, datas) {if (err) throw err;res.writeHead(200, { "Content-Type": "text/plain; charset=utf8" });res.end(JSON.stringify(datas));//client.close();});});return;
}const insertMongo = async (dbname, collection, newdatas, req, res) => {MongoClient.connect(mongourl, { useNewUrlParser: true, useUnifiedTopology: true }, function (err, client) {if (err) throw err;const db = client.db(dbname);db.collection(collection).insertMany(newdatas, function (err, datas) {if (err) throw err;res.writeHead(200, { "Content-Type": "text/plain; charset=utf8" });res.end(JSON.stringify(datas));//client.close();});});return;
}module.exports = {findMongo,insertMongo
};----------------------------------------------------
workmongo.js
const url = require('url');
const mongo = require('./mongo');
const querystring = require('querystring');//get 获取数据/查询
const work_get = async (req, res) => {const params = url.parse(req.url, true).query;try {switch (params.k) {case 'q': {if (params.n && params.c) {//基本查询 条件里不能加 ObjectId 如果需要的话可以单独写//dbname collection where//http://127.0.0.1:2323/get?k=q&n=data&c=wck&w={"y":"y"}mongo.findMongo(params.n, params.c, JSON.parse(params.w), req, res);}} break;default: {res.writeHead(200, { "Content-Type": "text/plain; charset=utf8" });res.write("Wow");res.end();}; break;}} catch (e) {datas = null;}
}//post 创建数据
const work_post = async (req, res) => {const params = url.parse(req.url, true).query;let postdata = '';req.on('data', function (chunk) {postdata += chunk;});req.on('end', async function () {postdataobj = querystring.parse(postdata);try {switch (params.k) {case 'i': {if (params.n && params.c) {//插入一条数据//dbname collection where//http://127.0.0.1:2323/post?k=i&n=data&c=wck 具体的内容,在post的body里面,采用标准json格式就好const postdataobjarr = [postdataobj];mongo.insertMongo(params.n, params.c, postdataobjarr, req, res);}} break;default:{res.writeHead(200, { "Content-Type": "text/plain; charset=utf8" });res.write("Wow");res.end();}; break;}} catch (e) {datas = null;}});
}//其他的各种增删改查 就按照上面的思路 再结合具体业务场景 慢慢写就好。
//建议 表转化 查询用 get 增加用 post 更改用 put 删除的话随意把。
//注意url的最大长度问题。module.exports = {work_get,work_post
};----------------------------------------------------
mainmongo.js
const http = require('http');
var url = require("url");
const workmongo = require('./workmongo');const route = async (req, res) => {//console.log("url.pathname:" + url.parse(req.url).pathname);switch (url.parse(req.url).pathname) {case "/get": {workmongo.work_get(req, res);}; break;case "/post": {workmongo.work_post(req, res);}; break;default: {res.end();} break;}
}const main = async () => {http.createServer(function (req, res) {route(req, res);}).listen(2323);
};main();

node-mongo-服务器封装相关推荐

  1. node服务器放vue项目,本地Vue项目跨域请求本地Node.js服务器的配置方法

    前言:跨域请求是在本地开发时经常遇到的需求,也很简单,只是几句代码配置一下的问题.我初次配置跨域请求时由于官方的说明太简洁,找到的教程又落伍,调试了一番并没有解决问题,到最后解决问题,已花费了很多时间 ...

  2. 服务端api用php写还是用node,如何使用node搭建服务器,写接口,调接口,跨域

    这次给大家带来如何使用node搭建服务器,写接口,调接口,跨域,使用node搭建服务器,写接口,调接口,跨域的注意事项有哪些,下面就是实战案例,一起来看一下.. 服务端项目目录下: 1.npm ini ...

  3. node redis集群_如何使用集群扩展Node.js服务器

    node redis集群 by Michele Riva 由Michele Riva 如何使用集群扩展Node.js服务器 (How to scale your Node.js server usin ...

  4. 写服务器node实际项目,基于node搭建服务器,写接口,调接口,跨域的实例

    刚开始学node,今天做这个也是累死宝宝了,以后可以自己写接口自己用了,再也不用麻烦人家后台人员了,这些年我们欠他们的太多了,说多了都是泪,不多说,往下看吧... 服务端项目目录下: 1.npm in ...

  5. node.js开源文件服务器,本地node.js服务器搭建

    本地node.js服务器搭建并通过浏览器访问服务器 1 2 3 github下载express https://github.com/expressjs/express 1.首先 检查是否安装了nod ...

  6. node.js服务器代理

    一.node.js服务器代理 1.使用nodejs实现代理,解决前端浏览器的同源策略导致的跨域问题 2.跨域只存在于浏览器端,服务器端是不存在同源策略 3.利用第三方模块http-proxy-midd ...

  7. 使用node搭建服务器(wifi连接查看vue项目)

    一.使用wifi连接node平台搭建的服务器,进行vue项目查看的步骤 最近新学了node搭建服务器,步骤比较多,怕忘记了,按操作顺序记录下来供参考 1.首先找到vue项目的文件夹,在上方输入&quo ...

  8. 搭建自己的Node.js 服务器 (一)

    搭建自己的Node.js 服务器 (一) 首先,为什么要自己搭建node服务器,node服务器的优点很多很多,不一一叙述,主要原因是个人测试需求,进而需要搭建一个服务器,完成后台功能(根本原因是不会J ...

  9. node.js服务器+mongodb数据库(重拾)

    1.node-express启动服务器 node app 127.0.0.1:3000  打开浏览器ok的话就启动成功(在public文件夹放个index.html) 加上了es6和热更新,npm s ...

  10. Node.js服务器启用Gzip压缩

    Gzip是什么 复制大神们的解释吧: GZIP最早由Jean-loup Gailly和Mark Adler创建,用于UNIX系统的文件压缩.我们在Linux中经常会用到后缀为.gz的文件,它们就是GZ ...

最新文章

  1. 2021年大数据ELK(十五):Elasticsearch SQL简单介绍
  2. 用php做一个简单的汇率,vue实现简单实时汇率计算功能
  3. c3p0连接池配置_Maven+JSP+Servlet+C3P0+Mysql实现的音乐库管理系统
  4. 微信公众号开发本地环境开发_如何在5分钟内使HTTPS在本地开发环境上工作
  5. IDEA真牛逼,900行又臭又长的类重构,几分钟搞定
  6. Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.
  7. 安装php时,configure: error: xml2-config not found. Please check your libxml2 installation
  8. Android 近百个项目的源代码,覆盖Android开发的每个领域
  9. ruby scala python_解释一个基准在C,Clojure,Python,Ruby,Scala和其他
  10. 阿里预面:谈谈你对双亲委派机制的理解?这个名字有啥问题?如何打破?为啥双亲委派?...
  11. python百度ai文字识别、代码分析_python利用百度AI实现文字识别功能
  12. c语言字符括号怎么表示什么意思,请问C语言中的bioskey(0)是啥意思,括号里的值又有啥用?...
  13. 【ACL2020】关于正式风格迁移的数据增强方法
  14. SEO–关于如何通过利用流量精灵刷百度排名及排名原理~
  15. OMEN惠普HP暗夜精灵5:win10下安装Ubuntu16.04双系统(win10+linux)
  16. html5大全,常用html5标签大全 - 小俊学习网
  17. 云计算——Google云计算原理与应用(Google文件系统GFS)
  18. 二叉查找树(BST)的基本概念及常用操作
  19. 雅思机考经验和考试内容(上海机考中心20191208)
  20. git 拉取远端分支

热门文章

  1. 页面中如何引用外部的HTML(四种方法)
  2. APP专项测试方法有哪些?
  3. 3月28日云栖精选夜读:小程序,会是下一个创业风口吗?
  4. node.js的request模块
  5. OD调试9—实例:深入分析代码完成软件破解
  6. C#函数实现的小功能
  7. Python【每日一问】36
  8. python编码与存储读取数据(数组字典)
  9. 【转】奴性哲学十句话,洗脑常用词!!!
  10. IBM HACMP 系列 -- 安装和配置三