概述
Mongodb是知名的Nosql数据库。在使用Mongodb时,我们不需要额外去学习 SQL语句,而且Mongodb查询出的数据就是Javascript对象,对于前端攻城狮的学习非常友好。在Nodejs应用开发中,我们一般会首选Mongodb作为我们的数据库。下面我们用几个小例子来介绍Mongodb官方提供的Nodejs驱动基本用法。
安装
yarn add mongodb
ps:这里我们不介绍mongodb的安装及使用方法,如果有需要的童鞋可以自行百度~
使用
首先,我们开始连接数据库,mongodb的默认端口是27017。
//db.js
const MongoClient = require("mongodb").MongoClient;
const url = `mongodb://localhost:27017`;
module.exports = {
db:null,
open() {
return new Promise(function(resolve,reject) {
MongoClient.connect(url,(err,client)=>{
if(err) {
throw new Error(err);
}
this.db = client.db('db');
resolve(this.db);
})
})
},
close() {
if(this.db) {
this.db.close();
}
}
}
封装一个dbHelper对象,方便我们在后面使用时快速建立与关闭mongodb链接。下面我们利用dbHelper进行用户信息对查询、保存、更新和删除。
我们新建User类来实现这个功能。
//user.js
const crypto = require('crypto');
const dbHelper = require('./db.js');
class User {
constructor(user) {
let pw = crypto.createHash("md5").update(user.password).digest('hex')
this.name = user.name;
this.password = pw;
}
save() {
let _user = {name:this.name,password:this.password};
dbHelper.open().then(db=>{
let userCollection = db.collection('users');
userCollection.insertOne(_user,(err,result)=>{
if(err) throw new Error(err);
console.log('保存用户成功:'+JSON.stringify(_user));
dbHelper.close();
})
})
}
static find(name) {
return new Promise((resolve,reject)=>{
dbHelper.open().then(db=>{
let userCollection = db.collection('users');
userCollection.findOne({name},(err,result)=>{
if(err) throw new Error(err);
console.log('找到用户:'+JSON.stringify(result));
dbHelper.close();
resolve(result);
})
})
})
}
static findAll() {
return new Promise((resolve,reject)=>{
dbHelper.open().then(db=>{
let userCollection = db.collection('users');
userCollection.find({}).toArray((err,result)=>{
if(err) throw new Error(err);
console.log(`查询用户列表成功:`+JSON.stringify(result));
dbHelper.close();
resolve(result);
})
})
})
}
static update(id,user) {
dbHelper.open().then(db=>{
let userCollection = db.collection('users');
userCollection.updateOne({'_id':ObjectId(id)},{$set:user},(err,result)=>{
if(err) throw new Error(err);
dbHelper.close();
console.log(`更新用户成功:`+user);
})
})
}
static remove(id) {
dbHelper.open().then(db=>{
let userCollection = db.collection('users');
userCollection.deleteOne({'_id':ObjectId(id)},(err,result)=>{
if(err) throw new Error(err);
dbHelper.close();
console.log(`删除用户成功:`+user);
})
})
}
}
module.exports = User;
现在,我们已经建立了User模型,让我们测试下之前所写的功能是否正常。
//index.js
import User from './user.js'
let user = {
name:"zhangsan",
password:'12345'
}
let user = new User(user);
//保存用户
user.save();
//查找所有用户
User.findAll();
//更新用户
User.update('xxxxxxxxx');
//删除用户
User.remove('xxxxxxxxx');
总结
今天就写到这里吧,关于 mongodb 操作还有另外一个更高级的封装mongoose。下次有机会再详细说说mongoose,加油~