声明: 当查询到数据库数据后,对数据库数据进行遍历,可以采用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. css 浮动的知识点

    首先要知道,div是块级元素,在页面中独占一行,自上而下排列,也就是传说中的流.如下图: 可以看出,即使div1的宽度很小,页面中一行可以容下div1和div2,div2也不会排在div1后边,因为d ...

  2. Python with open 使用技巧

    在使用Python处理文件的是,对于文件的处理,都会经过三个步骤:打开文件->操作文件->关闭文件.但在有些时候,我们会忘记把文件关闭,这就无法释放文件的打开句柄.这可能觉得有些麻烦,每次 ...

  3. 度限制MST

    POJ1639 顶点度数限制的最小生成树 做法:首先把和顶点相连的X条边全部删掉 得到顶点和 X个连通块 然后求出这X个连通块的MST 再把X条边连接回去这样我们就首先求出了X度MST 知道了X度MS ...

  4. 第二章 Vue快速入门-- 24 过滤器-Vue中全局过滤器的基本使用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  5. docker查看容器IP地址

    docker inspect 容器名称或 id 命令:docker inspect redismaster 结果:

  6. volatile关键字解决线程间内存共享变量同步的问题,让变量可以立即同步。

  7. 【VUE】Vue 源码解析

    Vue 源码解析 Vue 的工作机制 在 new vue() 之后,Vue 会调用进行初始化,会初始化生命周期.事件.props.methods.data.computed和watch等.其中最重要的 ...

  8. .NET Compiler Platform,一个.NET编译平台

    .NET Compiler Platform,一个.NET编译平台 如何利用C# Roslyn编译器写一个简单的代码提示/错误检查?   OK, 废话不多说,这些天在写C#代码时突然对于IDE提示有了 ...

  9. 乱花渐入迷人眼------从解决jqueryEasyUI上传插件提交ajax请求谈网页调试

    由于要给格斗男神写搏击俱乐部ERP系统,就要用到jquery Easyui插件规范数据和表单的录入,其中一项功能就是上传商品图片, 而且是在datagrid-detailview中使用filebox完 ...

  10. JavaScript基础——JavaScript常量和变量(笔记)

    JavaScript常量和变量(笔记) Javascript代码严格区分大小写. javascript暂不支持constant关键字,不允许用户自定义常量. javascript使用var关键字声明变 ...