分为三个文件
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. 使用免费 mongodb数据库 + 免费node.js服务器搭建小程序接口

    由于微信的小程序只支持不带端口的域名接口,不支持IP地址和接口,所以我们需要映射到80端口并绑定备案过的域名才能被微信小程序访问到.简单点就是接口需要 https 协议才行,找了许久的免费的数据库与n ...

  2. nodejs,node原生服务器搭建实例

    nodejs,node原生服务器搭建实例

  3. Mongo服务器集群配置【转】

    http://www.cnblogs.com/wly923/tag/MongoDB/ 当前标签: MongoDB   Mongo服务器集群配置学习三——分片 风行影者 2013-04-14 22:35 ...

  4. 【Node.js 自己封装的库 http_parse, libuv】

    [Node.js 自己封装的库 http_parse, libuv] Node.js 介绍:一个网络框架,更多:http://www.oschina.net/p/nodejs 官网:http://no ...

  5. 在腾讯云(windows)上搭建node.js服务器

    1:安装Node.js 使用MSI文件,并按照提示安装node.js,默认情况下,安装程序将 Node.js 发行到 C:\Program Files\nodejs. 但这里我们需要修改安装路径到:D ...

  6. 搭建一个简单的node.js服务器

    第一步:安装node.js.可以去官网:https://nodejs.org/en/进行下载. 查看是否成功,只需在控制台输入 node -v.出现版本号的话,就证明成功了. 第二步:编写node.j ...

  7. Node.js模块封装及使用

    Node.js中也有一些功能的封装,类似C#的类库,封装成模块这样方便使用,安装之后用require()就能引入调用. 一.Node.js模块封装 1.创建一个名为censorify的文件夹 2.在c ...

  8. 二十、Node.js- WEB 服务器 (三)静态文件托管、 路 由

    1.Nodejs 静态文件托管 上一讲的静态 web 服务器封装 项目结构: Web服务器封装成的模块:router.js代码: var http=require('http'); var fs=re ...

  9. node.js-web服务器

    node.js--web服务器 目前最主流的三个Web服务器是Apache.Nginx.IIS. 使用 Node 创建 Web 服务器 以下是演示一个最基本的 HTTP 服务器架构(使用8081端口) ...

  10. 本地Vue项目跨域请求本地Node.js服务器的配置方法

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

随机推荐

  1. 推荐!!! Markdown图标索引网站

    作者:三十三重天 博客: http://www.zhouhuibo.club 我们在观察别人的文章时候时,总能看到很多有趣的图标,像是这样

  2. 【odoo14】第一章、安装odoo的开发环境

    有几种方式去设置odoo的开发环境,我们将逐个介绍他们. 如果你之前没有接触过odoo的开发环境,那么有几个必要的概念你是需要了解的.在这一章节中,我们首先介绍odoo的生态.然后我们在进行介绍odo ...

  3. Webpack 学习笔记(1) 开始

    目录 参考资料 1. 基础设定 2. 创建一个包 3. 使用配置文件完成打包命令 4. 使用 NPM Scripts 完成打包命令 参考资料 Getting Started | Webpack web ...

  4. python3 多线程爬虫模板

    原文:https://www.jianshu.com/p/06ae2373f560 1 import threading # 多线程模块 2 import queue # 队列模块 3 import ...

  5. Asp.Net Core 学习随笔

    1.依赖注入 configureServices 中 //单例 services.AddSingleton<i,c>(); //http请求内 services.AddScopend< ...

  6. Java-TreeMap和Guava-HashMultiset

    一.Java-TreeMap 1.数据结构 底层数据结构是裸的红黑树,保证元素有序,没有比较器Comparator的情况按照key的自然排序,可自定义比较器.线程不安全. 可以存null,但是key不 ...

  7. 答应我,别在go项目中用init()了

    前言 go的 init函数给人的感觉怪怪的,我想不明白聪明的 google团队为何要设计出这么一个"鸡肋"的机制.实际编码中,我主张尽量不要使用init函数. 首先来看看 init ...

  8. 源码篇:Handler那些事

    前言 Handler属于八股文中非常经典的一个考题了,导致这个知识点很多时候,考官都懒得问了:这玩意很久之前就看过,但是过了一段时间,就很容易忘记,但是处理内存泄漏,aidlHandler之类的考点答 ...

  9. @PostConstruct 使用记录

    @PostConstruct 从Java EE5规范开始,Servlet增加了两个影响Servlet生命周期的注解(Annotation):@PostConstruct和@PreConstruct.这 ...

  10. JS基础学习第七天

    包装类 在JS中为我们提供了三个包装类:String() Boolean() Number()通过这三个包装类可以创建基本数据类型的对象例子: 123 var num = new Number(2); ...