// 引入mongodb模块
var mongodb = require('mongodb');
// 获取客户端
var mongoClient = mongodb.MongoClient;
// 封装成类
function Database(connectStr, dbname, collname) {
// 安全类
if (!(this instanceof Database)) {
return new Database(connectStr, dbname, collname);
}
// 赋值
this.connectStr = connectStr;
this.dbname = dbname;
this.collname = collname;
}
function _connect(connectStr, dbname, collname, callback) {
mongoClient.connect(connectStr, {useNewUrlParser: true, useUnifiedTopology: true}, function(err, client) {
// 判断连接是否有误
if (err) {
callback(err, null);
return;
}
// 连接没有问题
// 连接数据库
var db = client.db(dbname);
// 连接集合
var coll = db.collection(collname);
// 执行回调函数
callback(err, coll, client);
})
}
// 添加一条数据
Database.prototype.insertOne = function(obj, callback) {
// 备份this
var me = this;
// 调用连接函数
_connect(this.connectStr, this.dbname, this.collname, function(err, coll, client) {
if (err) {
callback(err, null);
} else {
// 添加一条数据
coll.insertOne(obj, function(err, result) {
// 关闭数据库
client.close();
// 执行回到函数
callback(err, result)
})
}
})
}
// 添加多条数据
Database.prototype.insertMany = function(arr, callback) {
// 备份this
var me = this;
// 建立连接
mongoClient.connect(this.connectStr, {useNewUrlParser: true, useUnifiedTopology: true}, function(err, client) {
// 判断连接是否有误
if (err) {
callback(err, null);
return;
}
// 连接没有问题
// 连接数据库
var db = client.db(me.dbname);
// 连接集合
var coll = db.collection(me.collname);
// 执行数据的添加操作
coll.insertMany(arr, function(err, result) {
// 关闭数据
client.close();
callback(err, result);
})
})
}
// 删除一条数据
Database.prototype.deleteOne = function(query, callback) {
// 调用连接函数
_connect(this.connectStr, this.dbname, this.collname, function(err, coll, client) {
// err 链接错误
if (err) {
callback(err, null);
} else {
// 删除一条数据
coll.deleteOne(query, function(err, result) {
// 关闭数据库
client.close();
// 执行回到函数
// err: 代表sql语句执行错误
callback(err, result)
})
}
})
}
// 删除多条数据
Database.prototype.deleteMany = function(query, callback) {
// 调用连接函数
_connect(this.connectStr, this.dbname, this.collname, function(err, coll, client) {
// err 链接错误
if (err) {
callback(err, null);
} else {
// 删除多条数据
coll.deleteMany(query, function(err, result) {
// 关闭数据库
client.close();
// 执行回到函数
// err: 代表sql语句执行错误
callback(err, result)
})
}
})
}
// 修改一条数据
Database.prototype.updateOne = function(query, updated, callback) {
// 调用连接函数
_connect(this.connectStr, this.dbname, this.collname, function(err, coll, client) {
// err 链接错误
if (err) {
callback(err, null);
} else {
// 修改一条数据
coll.updateOne(query, updated, function(err, result) {
// 关闭数据库
client.close();
// 执行回到函数
// err: 代表sql语句执行错误
callback(err, result)
})
}
})
}
// 修改多条数据
Database.prototype.updateMany = function(query, updated, callback) {
// 调用连接函数
_connect(this.connectStr, this.dbname, this.collname, function(err, coll, client) {
// err 链接错误
if (err) {
callback(err, null);
} else {
// 修改多条数据
coll.updateMany(query, updated, function(err, result) {
// 关闭数据库
client.close();
// 执行回到函数
// err: 代表sql语句执行错误
callback(err, result)
})
}
})
}
// 查找一条数据
Database.prototype.findOne = function(query, callback) {
// 调用连接函数
_connect(this.connectStr, this.dbname, this.collname, function(err, coll, client) {
// err 链接错误
if (err) {
callback(err, null);
} else {
// 查找一条数据
coll.findOne(query, function(err, result) {
// 关闭数据库
client.close();
// 执行回到函数
// err: 代表sql语句执行错误
callback(err, result)
})
}
})
}
// 查找多条数据
Database.prototype.findMany = function(query, callback) {
// 调用连接函数
_connect(this.connectStr, this.dbname, this.collname, function(err, coll, client) {
// err 链接错误
if (err) {
callback(err, null);
} else {
// 查找多条数据
coll.find(query).toArray(function(err, result) {
// 关闭数据库
client.close();
// 执行回到函数
// err: 代表sql语句执行错误
callback(err, result)
})
}
})
}
// 获得数据库对象
var db = new Database('mongodb://localhost:27017', 'sy101', 'user');
// 添加一条数据
// db.insertOne({name: 'yanxiaojiao6666', sex:'nv', age: 23}, function(err, res) {
// if (err) {
// console.log('添加数据失败');
// } else {
// console.log(res);
// }
// })
// 添加多条数据
// db.insertMany([{name: '洪明阳', sex: '女'}, {name: '马壮', sex: '保密'}], function(err, res) {
// console.log(err);
// console.log(res);
// })
// 删除一条数据
// db.deleteOne({name: 'zhangsan'}, function(err, res) {
// console.log(err);
// console.log(res);
// })
// 删除多条数据
// db.deleteMany({name: 'zhangsan'}, function(err, res) {
// console.log(err);
// console.log(res);
// })
// 修改一条数据
// db.updateOne({name: 'zhangsan'}, {$set:{age: 5}}, function(err, res) {
// console.log(err);
// console.log(res);
// })
// 修改多条数据
// db.updateMany({name: 'zhangsan'}, {$set:{age: 15}}, function(err, res) {
// console.log(err);
// console.log(res);
// })
// 查找一条数据
// db.findOne({name: 'zhangsan'}, function(err, res) {
// console.log(err);
// console.log(res);
// })
// 查找多条数据
// db.findMany({name: 'zhangsan'}, function(err, res) {
// console.log(err);
// console.log(res);
// })