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服务器的配置方法
前言:跨域请求是在本地开发时经常遇到的需求,也很简单,只是几句代码配置一下的问题.我初次配置跨域请求时由于官方的说明太简洁,找到的教程又落伍,调试了一番并没有解决问题,到最后解决问题,已花费了很多时间 ...
随机推荐
- WEB服务-Nginx之十-keepalived
WEB服务-Nginx之10-keepalived 目录 WEB服务-Nginx之10-keepalived Keepalived和高可用 基本概述 Keepalived安装配置 Keepalived ...
- Spring 中的事务
前言: 之前总结了事务以及数据库中事务相关的知识点,Spring 对于事务做了相应的封装,便于业务开发中使用事务. 项目中使用Spring中的事务首先时基于Mysql数据库中InnoDB 引擎的,如果 ...
- root 登录 lightdm freebsd下
root 登录 lightdm freebsd下方法 pkg install lightdm-gtk-greeter lightdm 写入lightdm_enable="YES"到 ...
- Azure Front Door(二)对后端 VM 进行负载均衡
一,引言 上一篇我们讲到通过 Azure Front Door 为我们的 Azure App Service 提供流量转发,而整个 Azure Front Door 在添加后端池的时候可选的后端类型是 ...
- 仿MSDN的帮助系统
作为软件开发人员,软件做好后,接下来就是编写文档.我自己也是做软件的,经常有用户询问软件的安装与使用, 我一直很喜欢微软的MSDN帮助系统,简介.大气,使用方便. 网上也找了很久,感觉一直没有合适的, ...
- Redis不是一直号称单线程效率也很高吗,为什么又采用多线程了?
Redis是目前广为人知的一个内存数据库,在各个场景中都有着非常丰富的应用,前段时间Redis推出了6.0的版本,在新版本中采用了多线程模型. 因为我们公司使用的内存数据库是自研的,按理说我对Redi ...
- EntityFrameworkCore之工作单元的封装
1. 简介 2. DbContext 生命周期和使用规范 2.1. 生命周期 2.2. 使用规范 2.3. 避免 DbContext 线程处理问题 3. 封装-工作单元 3.1. 分析 3.2. 设计 ...
- 在C#中使用 CancellationToken 处理异步任务
在 .NET Core 中使用异步编程已经很普遍了, 你在项目中随处可见 async 和 await,它简化了异步操作,允许开发人员,使用同步的方式编写异步代码,你会发现在大部分的异步方法中,都提供了 ...
- Android应用程序的进程创建过程
目录 前言 步骤 step1 Ams发起请求startProcessLocked step2 Zygote收到请求 step3 handleChildProc -- 进入子进程的世界 step4 Ru ...
- 7、Spring教程之使用注解开发
1.说明 在spring4之后,想要使用注解形式,必须得要引入aop的包 <dependency> <groupId>org.springframework</group ...