nodejs之mongodb操作
声明: 当查询到数据库数据后,对数据库数据进行遍历,可以采用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操作的更多相关文章
- nodejs对mongodb数据库的增删改查操作(转载)
首先要确保mongodb的正确安装,安装参照:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-debian-or-ubuntu-l ...
- 69.nodejs对mongodb数据库的增删改查操作
转自:https://www.cnblogs.com/sexintercourse/p/6485381.html 首先要确保mongodb的正确安装,安装参照:http://docs.mongodb. ...
- nodejs实践-MongoDB
nodejs实践-MongoDB laiqun@msn.cn Contents 1. 特点: 2. 开始使用 3. 使用Mongoose操作MongoDB 4. 在express中使用,组织数据库相关 ...
- Nodejs中Mongodb使用
Mongodb使用 打开解压后的Mongodb文件夹,新建data.logs文件夹,并在logs文件夹中新建mongodb.log文档. 添加后Mongod文件夹示意图: 用cmd命令行启动Mongo ...
- NodeJS+Express+MongoDB
一.MongoDB MongoDB是开源,高性能的NoSQL数据库:支持索引.集群.复制和故障转移.各种语言的驱动程序丰富:高伸缩性:MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言 ...
- Linux环境下安装NodeJS和mongoDB
前面的话 本文将详细介绍如何下Linux环境下安装NodeJS和mongoDB NodeJS [1]使用二进制包安装 1.在官网下载Linux环境下的NodeJS安装包 2.通过xftp软件将安装包上 ...
- nodejs+express+mongodb简单的例子
简单的介绍下node+express+mongodb这三个东西.node:是运行在服务器端的程序语言,表面上看过去就是javascript一样的东西,但是呢,确实就是服务器语言,个人觉得在一定层次上比 ...
- Mongoose使用——nodejs结合mongodb
0. 前言: Mongoose是NodeJS的驱动,不能作为其他语言的驱动.Mongoose有两个特点: 通过关系型数据库的思想来设计非关系型数据库 基于mongodb驱动,简化操作 Mongooos ...
- 【重点突破】—— Nodejs+Express+MongoDB的使用基础
前言:最近学习vue和react的高阶项目,都需要和Nodejs+Express+MongoDB结合实现全栈开发.这里结合实例Demo和所学项目集中总结一下这部分服务端的基础知识. 一.Express ...
随机推荐
- 安装Maatwebsite \ EXCEL \ ExcelServiceProvider
安装时报错 composer You can also run `php --ini` inside terminal to see which files are used by PHP in CL ...
- Django学习系列12:把Python变量传入模板中渲染
从视图的Python代码中把变量传入HTML模板. 模板中使用哪种句法引入Python对象,要使用的符号{{...}},它会以字符串的形式显示对象: <html> <head> ...
- [易学易懂系列|rustlang语言|零基础|快速入门|(16)|代码组织与模块化]
[易学易懂系列|rustlang语言|零基础|快速入门|(16)|代码组织与模块化] 实用知识 代码组织与模块化 我们知道,在现代软件开发的过程中,代码组织和模块化是应对复杂性的一种方式. 今天我们来 ...
- HihoCoder1052基因工程(简单模拟题)
描述 小Hi和小Ho正在进行一项基因工程实验.他们要修改一段长度为N的DNA序列,使得这段DNA上最前面的K个碱基组成的序列与最后面的K个碱基组成的序列完全一致. 例如对于序列"ATCGAT ...
- poj1830 开关问题[高斯消元]
其实第一反应是双向BFS或者meet in middle,$2^{14}$的搜索量,多测,应该是可以过的,但是无奈双向BFS我只写过一题,已经不会写了. 发现灯的操作情况顺序不影响结果,因为操作相当于 ...
- Mac的MySQL无法启动的原因
一.由于Mac OS X的升级或其他原因可能会导致一个错误: Warning:The /usr/local/mysql/data directory is not owned by the 'mysq ...
- 最新天猫3轮面试题目:虚拟机+并发锁+Sql防注入+Zookeeper
天猫一面 自我介绍.项目介绍 Spring拦截器.实现了哪些方法?底层原理 AOP如何配置,底层原理.2种动态代理,aop注解实现,xml定义切面 Bean的作用域,单例模式是否线程安全?恶汉模式是否 ...
- 将springboot jar应用打包成镜像并在docker运行成容器
先看一下我的Dockerfile内容与服务器中的目录结构 上面 yibai-0.0.1-SNAPSHOT.jar 为springboot应用打成的jar包,Dockerfile为将应用打成镜像的配置文 ...
- Java多线程和并发(五),线程的状态
目录 1.线程的六个状态 2.sleep和wait的区别 3.锁池(EntryList)和等待池(WaitSet) 4.notify和notifyall的区别 五.线程的状态 1.线程的六个状态 2. ...
- Nowcoder 练习赛 17 C 操作数 ( k次前缀和、矩阵快速幂打表找规律、组合数 )
题目链接 题意 : 给定长度为n的数组a,定义一次操作为: 1. 算出长度为n的数组s,使得si= (a[1] + a[2] + ... + a[i]) mod 1,000,000,007: 2. ...