node-mongo-服务器封装
分为三个文件
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-服务器封装的更多相关文章
- 使用免费 mongodb数据库 + 免费node.js服务器搭建小程序接口
由于微信的小程序只支持不带端口的域名接口,不支持IP地址和接口,所以我们需要映射到80端口并绑定备案过的域名才能被微信小程序访问到.简单点就是接口需要 https 协议才行,找了许久的免费的数据库与n ...
- nodejs,node原生服务器搭建实例
nodejs,node原生服务器搭建实例
- Mongo服务器集群配置【转】
http://www.cnblogs.com/wly923/tag/MongoDB/ 当前标签: MongoDB Mongo服务器集群配置学习三——分片 风行影者 2013-04-14 22:35 ...
- 【Node.js 自己封装的库 http_parse, libuv】
[Node.js 自己封装的库 http_parse, libuv] Node.js 介绍:一个网络框架,更多:http://www.oschina.net/p/nodejs 官网:http://no ...
- 在腾讯云(windows)上搭建node.js服务器
1:安装Node.js 使用MSI文件,并按照提示安装node.js,默认情况下,安装程序将 Node.js 发行到 C:\Program Files\nodejs. 但这里我们需要修改安装路径到:D ...
- 搭建一个简单的node.js服务器
第一步:安装node.js.可以去官网:https://nodejs.org/en/进行下载. 查看是否成功,只需在控制台输入 node -v.出现版本号的话,就证明成功了. 第二步:编写node.j ...
- Node.js模块封装及使用
Node.js中也有一些功能的封装,类似C#的类库,封装成模块这样方便使用,安装之后用require()就能引入调用. 一.Node.js模块封装 1.创建一个名为censorify的文件夹 2.在c ...
- 二十、Node.js- WEB 服务器 (三)静态文件托管、 路 由
1.Nodejs 静态文件托管 上一讲的静态 web 服务器封装 项目结构: Web服务器封装成的模块:router.js代码: var http=require('http'); var fs=re ...
- node.js-web服务器
node.js--web服务器 目前最主流的三个Web服务器是Apache.Nginx.IIS. 使用 Node 创建 Web 服务器 以下是演示一个最基本的 HTTP 服务器架构(使用8081端口) ...
- 本地Vue项目跨域请求本地Node.js服务器的配置方法
前言:跨域请求是在本地开发时经常遇到的需求,也很简单,只是几句代码配置一下的问题.我初次配置跨域请求时由于官方的说明太简洁,找到的教程又落伍,调试了一番并没有解决问题,到最后解决问题,已花费了很多时间 ...
随机推荐
- navicat 给mysql 添加存储过程(函数)
BEGIN DECLARE i INT default 0; DECLARE num int default 0; DECLARE count1 int default 0; DECLARE coun ...
- FreeBSD 发布 2020 年 Q3 季度报告
FreeBSD 几日前发布 Q3 季度报告,介绍了在过去第三季度里 FreeBSD 完成的工作和相关项目,涉及到架构支持.内核改进.持续集成和驱动程序优化等. 列举部分如下: FreeBSD 基金会目 ...
- TensorFlow学习(1)-初识
初识TensorFlow 一.术语潜知 深度学习:深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法. 深度学 ...
- innerHTML,innerText
文本替换 <p id="p1">Hello World!</p><div>神经</div><h3 class="hh ...
- Linux目录,rpm及top,vi命令简记
一次简单的Linux常用操作记录 一.一些Linux目录结构 /bin 存放二进制可执行文件(ls.cat.mkdir等),一些常用的命令一般都在这里. /etc 存放系统管理和配置文件 /home ...
- python爬虫加定时任务,制作微信提醒备忘录
一.任务的记录与提取 1.1 制作每日任务 为了便于爬取,推荐使用网页版的在线记事本,现在这种工具很多,我选择"石墨文档"进行操作演示.记录内容的 格式可以根据自己的需求和爬虫自行 ...
- MySQL优化从执行计划开始(explain超详细)
前言 小伙伴一定遇到过这样反馈:这页面加载数据太慢啦,甚至有的超时了,用户体验极差,需要赶紧优化: 反馈等同于投诉啊,多有几次,估计领导要找你谈话啦. 于是不得不停下手里头的活,赶紧进行排查,最终可能 ...
- Rancher 安装和使用-实践
Rancher 安装和使用 Rancher是一个完整的,开源的平台,用于在生产环境中部署和管理容器.它包括Kubernetes,Mesos和Docker Swarm的商业支持发行版,使得在任何基础架构 ...
- OO_Unit1_Summary
经历了十分充实(痛不欲生)的三周不一样的码代码的生活,让我对通宵oo有了新的认识.往届学长学姐诚不欺我 第一次作业 需求分析 第一次需求非常简单(相比较后两次作业而言),仅为简单多项式求导,而且仅包含 ...
- BUAA_2020_OO_UNIT4_REVIEW&ALL_REVIEW
OO第四单元总结&&学期总结 1. 第四单元作业总结 本单元三次作业都围绕了UML图的建模展开,第十三次作业只有类图,第十四次作业增加了顺序图和状态图,第十五次增加了部分UML规则的判 ...