nodejs封装操作mongodb数据库

该博客展示了如何使用Node.js封装MongoDB数据库操作,包括连接、插入、删除、更新和查询数据。通过创建`Database`类,实现了对数据库连接的管理,以及增删改查的基本功能,提供了灵活的数据操作接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// 引入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);
// })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值