//从现在开始,我们要学习的就是关于Node.js与mongoDB的联合
首先我们要做的就是在node环境里面下载mongodb 顺便安装上依赖
1、首先要做的就是进入项目
>>d:
>>cd D:DocumentsHBuilderProject
odejsmongoNode
2、然后安装
cnpm install mongodb --save
3、创建一个文件 比如名字叫sqltest.js,并在里面引入mongodb的客户端
var MongoClient = require('mongodb').MongoClient;
4、找到数据库(这里要注意,我们以前用的是http协议或者是https协议,这里是mongodb协议)
var DB_CONN_STR = 'mongodb://localhost:27017/movies';
5、连接数据库
MongoClient.connect(DB_CONN_STR, function(err, db) {
if(err){
console.log(err)
}else{
console.log('数据库连接成功!')
}
})
这里要注意一下,如果这里先把mongoDB的两个命令窗口给关了,这里再运行node sqltest.js的时候,就会报错,提示我们没有连上localhost:27017!
6、接着连接成功之后就像要想证删改查啦! 【这里注意一下,除了find查询数据外,其他三个方法都有回调函数。只有find需要先toArray】
因为我们的函数里面已经有db的参数了,所以我们先打印一下db
MongoClient.connect(DB_CONN_STR, function(err, db) {
if(err){
console.log(err)
}else{
console.log('数据库连接成功!')
console.log(db);
}
})
会的出来一堆的数据,包括数据库什么的~
这个时候,我们要连接数据库的其中一张表: var collection = db.collection('list');
//这里必须记录一下了!当我使用console.log(db.collection('list'));的时候,命令窗口一直显示的是db.collection is not a function
后来查了一下说是版本的原因,然后我就去mongoNode下面的package.json里面,把原来的
{
"dependencies": {
"mongodb": "^^2.2.33"
}
}
改为了
{
"dependencies": {
"mongodb": "^2.2.33"
}
}
竟然就成功了!也是醉了···神坑呀神坑!
出来之后应该是这样子的:
Collection {
//s:这里都省略
}
上面的Collection就恰恰说明了已经成功!
6.1:增加数据>还是原来的配方,还是熟悉的味道,依然是我们的insert。
1)增一条数据
insertData:function(db,collectionName,data){//这里的data为对象
db.collection(collectionName).insert(data,function(err,result){
if(err){
console.log(err)
}else{
console.log('ok!');
}
})
}
var data = {"name":"菜鸟教程","url":"www.runoob.com"},{"name":"菜鸟工具","url":"c.runoob.com"};
collection.insert(data);
2)增加多条,这个就简单啦
var data = [{"name":"菜鸟教程","url":"www.runoob.com"},{"name":"菜鸟工具","url":"c.runoob.com"}];
collection.insertMany(data,function(){err,result});
3)模块化开发
就是将函数全部封装在MySql.js里面,然后进行暴露:module.exports = MySql,然后在sql.js里面引入:var MySql = require('./MySql.js');
然后就可以直接执行啦!
这里要注意,我们的函数中的那个MySql.insertData(db,'list',data)的list,有则插入,无责自己生成后插入。
6.2:查询数据 toArray
findData:function(db,collectionName,searchObj,showObj){
db.collection(collectionName).find(searchObj,showObj).toArray(function(err, result) {
if(err){
console.log('Error:'+ err);
}else{
console.log(result);
}
});
}
结果是:
[ { title: '肖申克的救赎' },
····//中间的省略
{ title: '肖申克的救赎' } ]
6.3:更新数据
1)更新一条
updateData:function(db,collectionName,whereObj,updateObj){
db.collection(collectionName).update(whereObj,updateObj,function(err,result){
if(err){
console.log('Error:'+ err);
}else{
console.log(result);
}
})
}
MySql.updateData(db,'list',{year:'1994'},{$set:{year:'1000'}});
2)更新多条
MySql.updateManyData(db,'list',{year:'1994'},{$set:{year:'1000'}});
由此可以看出,对于更新来讲,一个和多个其实函数是一样的,就看你调用的时候怎么写了
一般来讲,更新多条不是在里面写一个数组,而是一个判断条件!
db.list.updateMany({year:{$lt:'1995'}},{$set:{year:'1000'}})
6.4:删除数据
1)删除一条
deleteData:function(db,collectionName,deleteObj){
db.collection(collectionName).deleteOne(deleteObj,function(err,result){
if(err){
console.log(err)
}else{
console.log('delete ok!');
}
})
}
MySql.deleteData(db,'list',{title:'肖声克的救赎'});
2)删除多条
MySql.deleteManyData(db,'list',{title:'肖声克的救赎'});
这个和更新是一样的
但是我们要考虑到一个问题,这个console.log是不能写唯一的,所以我们要有一个回调函数!callback
//查询数据
findData:function(db,collectionName,searchObj,showObj,callback){
db.collection(collectionName).find(searchObj,showObj).toArray(function(err, result) {
if(err){
console.log('Error:'+ err);
// return;
}else{
// console.log(result);
callback(result);
}
});
}
MySql.findData(db,'list',{},{title:1,'_id':0},function(result){
console.log(result)
});
接下来我们就要学习写页面了!