声明: 当查询到数据库数据后,对数据库数据进行遍历,可以采用toArray()函数,具体实现可以看第六点

1、本地安装mongodb

  安装包:https://www.mongodb.com/download-center/community

2、npm安装mongodb模块

  npm install mongodb --save-dev
  npm install ejs --save-dev

3、创建express-route路由模块文件 

var url=require('url');

    //封装方法改变res  绑定res.send()
function changeRes(res){
res.send=function(data){
res.writeHead(,{"Content-Type":"text/html;charset='utf-8'"});
res.end(data);
}
} //暴露的模块
var Server=function(){
var G=this; /*全局变量*/
//处理get和post请求
this._get={};
this._post={};
var app=function(req,res){
changeRes(res);
//获取路由
var pathname=url.parse(req.url).pathname;
if(!pathname.endsWith('/')){
pathname=pathname+'/';
}
//获取请求的方式 get post
var method=req.method.toLowerCase();
if(G['_'+method][pathname]){
if(method=='post'){ /*执行post请求*/
var postStr='';
req.on('data',function(chunk){
postStr+=chunk;
})
req.on('end',function(err,chunk) {
req.body=postStr; /*表示拿到post的值*/
G['_'+method][pathname](req,res); /*执行方法*/
})
}else{ /*执行get请求*/
G['_'+method][pathname](req,res); /*执行方法*/
}
}else{
res.end('no router');
}
} app.get=function(string,callback){
if(!string.endsWith('/')){
string=string+'/';
}
if(!string.startsWith('/')){
string='/'+string;
}
// /login/
G._get[string]=callback;
} app.post=function(string,callback){
if(!string.endsWith('/')){
string=string+'/';
}
if(!string.startsWith('/')){
string='/'+string;
}
G._post[string]=callback;
}
return app;
}
module.exports=Server();

4、连接并添加数据Demo

var http = require('http');
var app = require('./module/express-route');
var ejs = require('ejs'); /*mongodb连接设置*/
const MongoClient = require('mongodb').MongoClient;
const dburl = 'mongodb://localhost:27017';
const dbName = 'test';
const client = new MongoClient(dburl);
/**/
http.createServer(app).listen(''); /**
* 添加数据
*/
app.get('/add',function (req,res) {
client.connect(function(err) {
if(err){//连接失败
console.log("Connected fail to server");
}
//连接成功
console.log("Connected successfully to server");
const db = client.db(dbName);
db.collection('shop').insertOne({'name':"name-yangwenjie","age":},function (error,result) {
if(error){
console.log("insert database faile");
}
console.log("insert database successfully");
client.close();
})
});
})

5、nodejs操作mongdb增删改查操作并联合ejs联合使用

/**
* 添加数据
*/
app.get('/add',function (req,res) {
client.connect(function(err) {
if(err){//连接失败
console.log("Connected fail to server");
}
//连接成功
console.log("Connected successfully to server");
const db = client.db(dbName);
db.collection('shop').insertOne({'name':"name-yangwenjie","age":},function (error,result) {
if(error){
console.log("insert database faile");
}
console.log("insert database successfully");
client.close();
})
});
}); /**
* 查找数据和EJS一起使用
*/
app.get('/find',function (req,res) {
var list = [];
client.connect(function (err) {
if (err) {//连接失败
console.log("Connected fail to server");
}
//连接成功
console.log("Connected successfully to server");
const db = client.db(dbName);
var result = db.collection('shop').find({ "age" : });
result.each(function (err,data) {
if(err){
console.log(err);
} else {
if(data!=null){
list.push(data);
console.log("你好:"+list[].name);
ejs.renderFile('练习/views/index.ejs',{list:list},function (err,data) {
if(err){
console.log(err);
return false;
}
console.log(data);
res.send(data);
});
}else {//循环完成
console.log("循环完成"+list);
}
}
})
});
}); /**
* 删除文档
*/
app.get('delete',function (req,res) {
client.connect(function (err) {
if(err){
console.log("Connected fail to server");
}
console.log("Connected successfully to server");
const db = client.db(dbName);
//文档和过滤条件
db.collection('shop').deleteOne({"name":"name-yangwenjie"},function (err,result) {
if(err){
console.log("delete fail to server");
}
console.log("delete successfully to server");
console.log(result);
})
})
}) /**
* 更新文档数据
*/
app.get('/update',function (req,res) {
client.connect(function (err) {
if(err){
console.log("连接数据库失败!");
}
console.log("连接数据库成功!");
var db = client.db(dbName);
db.collection('shop').updateOne({"name":"yangwenjie"},{$set:{"age":}},function (err,result) {
if(err){
console.log("更新数据失败");
}
console.log("更新数据成功!");
console.log(result);
}) })
})

6、遍历查找的数据建议采用toArray()进行遍历

 var result = db.collection('user').find(req.body);
result.toArray(function (err,data) {
//console.log(data.username);
//console.log(data.length);
if(data.length>){
//登陆成功
req.session.userinfo=data[];
//res.render('product');
res.redirect('/product');
}else {
//登陆失败
res.send("<script>alert('登陆失败');location.href='/login'</script>")
}
})

注意:mongodb配置代码

const  MongoClient = require('mongodb').MongoClient; //引用mongodb
const dburl = 'mongodb://localhost:27017'; //数据库url
const dbName = 'test'; //数据库名
const client = new MongoClient(dburl); //创建一个客户端
client.connect(function(err) {
if(err){
console.log("Connected fail to server");
}
console.log("Connected successfully to server");
const db = client.db(dbName);
//添加数据库操作代码
client.close();
});

具体可以参考mongodb关于nodejs的官方文档:http://mongodb.github.io/node-mongodb-native/3.1/quick-start/quick-start/

nodejs之mongodb操作的更多相关文章

  1. nodejs对mongodb数据库的增删改查操作(转载)

    首先要确保mongodb的正确安装,安装参照:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-debian-or-ubuntu-l ...

  2. 69.nodejs对mongodb数据库的增删改查操作

    转自:https://www.cnblogs.com/sexintercourse/p/6485381.html 首先要确保mongodb的正确安装,安装参照:http://docs.mongodb. ...

  3. nodejs实践-MongoDB

    nodejs实践-MongoDB laiqun@msn.cn Contents 1. 特点: 2. 开始使用 3. 使用Mongoose操作MongoDB 4. 在express中使用,组织数据库相关 ...

  4. Nodejs中Mongodb使用

    Mongodb使用 打开解压后的Mongodb文件夹,新建data.logs文件夹,并在logs文件夹中新建mongodb.log文档. 添加后Mongod文件夹示意图: 用cmd命令行启动Mongo ...

  5. NodeJS+Express+MongoDB

    一.MongoDB MongoDB是开源,高性能的NoSQL数据库:支持索引.集群.复制和故障转移.各种语言的驱动程序丰富:高伸缩性:MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言 ...

  6. Linux环境下安装NodeJS和mongoDB

    前面的话 本文将详细介绍如何下Linux环境下安装NodeJS和mongoDB NodeJS [1]使用二进制包安装 1.在官网下载Linux环境下的NodeJS安装包 2.通过xftp软件将安装包上 ...

  7. nodejs+express+mongodb简单的例子

    简单的介绍下node+express+mongodb这三个东西.node:是运行在服务器端的程序语言,表面上看过去就是javascript一样的东西,但是呢,确实就是服务器语言,个人觉得在一定层次上比 ...

  8. Mongoose使用——nodejs结合mongodb

    0. 前言: Mongoose是NodeJS的驱动,不能作为其他语言的驱动.Mongoose有两个特点: 通过关系型数据库的思想来设计非关系型数据库 基于mongodb驱动,简化操作 Mongooos ...

  9. 【重点突破】—— Nodejs+Express+MongoDB的使用基础

    前言:最近学习vue和react的高阶项目,都需要和Nodejs+Express+MongoDB结合实现全栈开发.这里结合实例Demo和所学项目集中总结一下这部分服务端的基础知识. 一.Express ...

随机推荐

  1. 记一次部署PHP遇到的编码问题故障

    php开发给我项目和数据库,我按正常部署流程部署,开始发现之梦的后台登陆不了,后发现是属主属组不对,代码直接解压后是root的,更改后,后台能登陆,但部分显示乱码.后将正常的数据库文件重新导入后,显示 ...

  2. mysql总结1

    修改表名:alter table table_name rename new_table_name; 添加字段:alter table table_name add column_name type_ ...

  3. 【BZOJ1176】Mokia

    题目大意:给定一个 N*N 的矩形,有 Q 次操作,每个操作可以是矩形单点修改或查询子矩形的权值和. 题解:CDQ分治适合处理修改操作之间互不影响且支持离线的题目. 满足以上操作条件的显然可以树套树来 ...

  4. python fc21~fc29踩坑记录

    最近在公司的linux fc21上安装python和anaconda, 直接mintmenu给挂掉了. 真是弱爆了. 后来,升级终于来了, 升到了fc29.好,再看看, python2.7还在, py ...

  5. PowerDesigner 生成SQL Server 注释脚本

    --生成数据表的注释EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=[%R%?[N]]%.q:COMMENT% , @l ...

  6. 并行计算基础(1)(GPU架构介绍)

    一.常用术语 Task:任务.可以完整得到结果的一个程序,一个程序段或若干个程序段.例如搬砖. Parallel Task:并行任务.可以并行计算的任务.多个人搬砖. Serial Execution ...

  7. (转)JS window对象的top、parent、opener含义

    1.top    该变更永远指分割窗口最高层次的浏览器窗口.如果计划从分割窗口的最高层次开始执行命令,就可以用top变量. 2.opener opener用于在window.open的页面引用执行该w ...

  8. Python字典里的5个黑魔法

    Python里面有3大数据结构:列表,字典和集合.字典是常用的数据结构,里面有一些重要的技巧用法,我把这些都整理到一起,熟练掌握这些技巧之后,对自己的功力大有帮助. 1.字典的排序: 用万金油sort ...

  9. G.subsequence 1(dp + 排列组合)

    subsequence 1 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 You are ...

  10. javaScrpit插件学习制作

    最近一直在学习javaScrpit插件制作,前几天学习制作了一个插件但存在严重缺陷. javaScrpit插件写法多种多样通过这几天的学习终于找到了适合自己的方法.前几天的缺陷也得到了解决.下面我们用 ...