node ajax crud,MongoDB+NodeJS(CRUD) 系列详细图解

该博客展示了如何使用Node.js中的'Mongodb'、'request'、'cheerio'和'fs'库进行数据操作。主要内容包括连接MongoDB数据库、插入单条和多条数据、查询数据以及更新数据的示例。通过示例代码,读者可以学习到如何在MongoDB中进行数据的增删改查操作。
摘要由CSDN通过智能技术生成

var MongoClient = require('mongodb').MongoClient;

var request = require('request');

var cheerio = require('cheerio');

var path = require('path');

var fs = require('fs');

var filenames=new Array();

var keywords='singerurl';

//mongodb链接字符串

var DB_URL = 'mongodb://localhost:27017/';

//测试插入数据

dbclient(DB_URL,'nebulae','astro',function(db,client0){

console.log('client0 connect DB finished ')

var data={

"singername" : "姜潮",

"singerurl" : "http://www.kugou.com/yy/singer/home/89163.html"

}

var data1 =[{

"singername" : "帆乃佳",

"singerurl" : "http://www.kugou.com/yy/singer/home/304438.html"

},{

"singername" : "柏木由紀",

"singerurl" : "http://www.kugou.com/yy/singer/home/95002.html"

}]

insertOneData(db,data);

console.log('insert one data finished')

// insertManyData(db,data1,function(callback){

// console.log('Insert many data finished')

// });

client0.close()

console.log('client0 close')

});

//测试更新数据

dbclient(DB_URL,'nebulae','astro',function(db,client1){

console.log('client1 connect DB finished ')

var urllist=[]

var datalist=[]

findkeyData(db,keywords,function(keylist,alllist){

console.log('find data finished');

console.log('data.length is :%d ',alllist.length);

/*

for(let item in alllist){

console.log(alllist[item])

console.log(item)

}

*/

//console.log('keylist[1]=[%s],alllist[1]=[%s]',keylist[1],alllist[1])

urllist=keylist

datalist=alllist

for(var i in keylist )

{

var tmpa={'singerurl':keylist[i]}

alllist[i].a=['new_item','test_'+i]

delete alllist[i]._id //更新数据的时候,由于_id是惟一的,因此不能把这个字段带上

//console.log(tmpa)

//console.log(alllist[i])

updateKeyData(db,tmpa,alllist[i],function (callback){

console.log('update data finished');

})

}

console.log('this is find finished')

client1.close()

});

console.log('client1 close')

});

/**

* 链接mongodb

* @param host 链接字符串

* @param collections 表

* @param dbs 数据库

* @param callback

*/

function dbclient(host,collections,dbs,callback){

MongoClient.connect(host,{useUnifiedTopology:true,useNewUrlParser:true},function(err, client) {

var collect=client.db(collections)

var db = collect.collection(dbs);

console.log('链接 %s 成功,set collection[%s] and db[%s] finished',host,collections,dbs)

callback(db,client)

});

}

/**

* 定义函数表达式,用于操做数据库并返回结果,插入一条数据

* @param db

* @param data

*/

var insertOneData = function(db, data) {

db.insertOne(data, function(err, result){

if(err){

//若是存在错误

console.log('Error:'+ err);

return;

}else{

console.log('One date be insert finished')

}

});

}

/**

* 插入多条数据

* @param db

* @param data

*/

var insertManyData = function(db, data,callback) {

db.insertMany(data, function(err, result) {

//若是存在错误

if(err)

{

console.log('Error:'+ err);

return;

}else{

//调用传入的回调方法,将操做结果返回

//console.log(result)

callback(result);

}

});

}

/**

* 更新数据

* @param db

* @param olddata

* @param newdata

* @param callback

*/

var updateKeyData = function(db, olddata,newdata,callback) {

//得到指定的集合

//要修改数据的条件,>=10岁的用户

//var where={age:{"$gte":10}};

//要修改的结果

console.log(olddata)

console.log(newdata)

var set={$set:newdata};

db.updateMany(olddata,set, function(err, result) {

//若是存在错误

if(err)

{

console.log('Error:'+ err);

return;

}else{

//调用传入的回调方法,将操做结果返回

callback(result);

}

});

}

/**

* 更新数据

* @param db

* @param callback

*/

var updateData = function(db, callback) {

//得到指定的集合

var collection = db.collection('users');

//要修改数据的条件,>=10岁的用户

var where={age:{"$gte":10}};

//要修改的结果

var set={$set:{age:95}};

collection.updateMany(where,set, function(err, result) {

//若是存在错误

if(err)

{

console.log('Error:'+ err);

return;

}

//调用传入的回调方法,将操做结果返回

callback(result);

});

}

/**

* 全部数据中获取指定元素数据

* @param db

* @param keyword

* @param callback

*/

var findkeyData = function(db,keyword,callback) {

var keyvalue=[]

var allvalue=[]

db.find().toArray(function(err, result) {

//若是存在错误

if(err){

console.log('Error:'+ err);

return;

}else{

result.forEach(function(val){

for(let item in val){

if(item == keyword){

console.log(val[item]);

//console.log(val);

keyvalue.push(val[item]);

allvalue.push(val);

}

}

});

}

console.log('get keyvalue list finished');

//console.log(allvalue);

callback(keyvalue,allvalue);

});

}

/**

* 查询数据

* @param db

* @param callback

*/

var findAllData = function(db,callback) {

db.find().toArray(function(err, result) {

//若是存在错误

if(err)

{

console.log('Error:'+ err);

return;

}

callback(result);

});

}

/**

* 删除数据

* @param db

* @param callback

*/

var removeData = function(db, callback) {

//得到指定的集合

var collection = db.collection('users');

//要删除数据的条件,_id>2的用户删除

var where={_id:{"$gt":2}};

collection.remove(where,function(err, result) {

//若是存在错误

if(err)

{

console.log('Error:'+ err);

return;

}

//调用传入的回调方法,将操做结果返回

callback(result);

});

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值