node + mongodb 简单实现自己的查询接口

话不多说直接上代码

const http = require('http');
const Db = require('mongodb').Db;
const Connection = require('mongodb').Connection;
const Server = require('mongodb').Server;
const query2 = require('querystring');
var url=require('url');

let settings = {
	cookieSecret : 'shop',
	db : 'local',
	host : 'localhost',
	port : 27017
}
let shopping = new Db(settings.db, new Server(settings.host,settings.port),
	{safe : true});


var server = http.createServer(function(req,res){

	var  arg=url.parse(req.url).query ;
	var nameValue=query2.parse(arg)['funNo']
	//var cc = query.parse(req);

	// var data = "";
	// res.on('data', function (chunk) {
	//   data += chunk;
	// })
	// .on("end", function () {
	//   //对data转码
	// });

  if(nameValue == '001'){
    let param = {
      pdtId : 1,
    }
   getOne(param.pdtId,function(err,post){
	      var data = JSON.stringify(post);
	      res.writeHead(200, {
				'Content-type' : 'application/json',
				});
	    res.setHeader({
				'Access-Control-Allow-Origin': '*'
				});
	      res.write(data,'UTF-8');// 向请求客户端发送相应内容,data是buffer或字符串,encoding为编码
	      res.end(); //结束响应,告知用户所有发送已经完成,当所有要返回的内容发送完

	    })
  }
})
function getOne(pdtId,callback){
  shopping.open(function(err,db){
    if(err){
      return callback(err);
    }
    //打开数据库之后就去找数据了
    db.collection('chen',function(err,collection){
        if(err){
          shopping.close();
          return callback(err);
        }
        //根据条件查询
        collection.findOne({
          "pdtId" : pdtId,

        },function(err,data){
          shopping.close();
          if(err){
            return callback(err);
          }
          //将查到的文档解析
          //doc.post = markdown.toHTML(doc.post);
	  var cc = [];
	  cc.push(data)
          callback(null,cc)//返回查询的文章
        })
    })
  })
}
server.listen(8081);

 如以上的代码,通过对数据库设置,连上本地数据库。然后通过querystring解析查询条件,这里的查询条件我写死了 ,pdtId = 001,然后通过对数据库的操作,将数据返回。

浏览器输出地址,可以看到数据。

转载于:https://www.cnblogs.com/jjucap/p/8434505.html

最近重构并优化了一套后端服务的代码: 1. 设计并开发高效的C++对象池算法,时间复杂度为 O(1) 在整个重构框架中,对象池是负责管理内存的底层基本模块 2. 利用命令模式的思想开发 Redis 子模块 抽象出方便高效的接口提供给上层程序员使用 3. 利用组合模式和装饰模式的思想开发 MongoDB 数据库查询条件装饰器 将查询条件和数据库 MongodbModule 数据模型进行解耦合 4. 抽象出一套 MongoDB Module 结果集接口 通过模板和特化技术实现 string/int 等不同索引类型的结果集 5. 开发 AbstractMongodbModule 类处理通用的 MongoDB 数据库表数据操作 数据库中不同的表都有自己的 AbstractMongodbModule 子类对应 6. 用 Perl 开发自动代码生成器,上层程序员对照数据库表结构写 .tmpl 配置文件, 自动生成该数据库表的 MongodbModule 子类,减轻程序员新增表时的工作量 7. 结合 Redis 模块和 MongoDB 模块,开发 HierarchicalModule 分层数据模型 构造一个 Redis 缓存层 + MongoDB 持久层的后台 Server 架构 并通过简单方便的接口供上层程序员使用,具体的数据分层处理对上层程序员是黑盒的 8. 设计并开发整套缓存层使用的 KEY 规则,方便缓存更新 结合公司的数据订阅系统进行 Redis缓存层 + MongoDB 持久层数据更新功能 9. 重构后的分层数据架构比原有接口效率提高 5 - 400 倍(返回数据记录条数从 150 - 5 条) 绝大部分时间后端接口需要获取记录个数在 50 以内,所以效率提升在 100 倍左右
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值