3.0文檔:http://mongodb.github.io/node-mongodb-native/3.0/
1.引入依賴包:
npm install mongodb --save-dev
2.建立一個簡單的服務(wù),引入mongodb:
var express = require('express');
var app = express();
var MongoClient = require('mongodb').MongoClient;
var dbURL = 'mongodb://localhost:27017';
app.listen(process.env.POST || 8080);
3.寫個路由
app.get('/insert',function(req, res) {
MongoClient.connect(dbURL,function(err, db) {
assert.equal(err,null);
const person = db.db('person');
const student = person.collection('student');
student.insertOne({
"name": "insert in nodejs"
},function(error, result) {
var re = JSON.parse(result);
if (re.n === 1) {
res.send("插入成功。");
} else {
res.send("插入失敗,error:" + error);
}
res.end();
db.close();
})
})
})
(1)連上數(shù)據(jù)庫:connect(dbURL,callback)
(2)獲取到要操作的數(shù)據(jù)庫,然后獲取要操作的表:
const person = db.db('person');
const student = person.collection('student');
舊版本的寫法是直接獲取person數(shù)據(jù)庫余赢,回調(diào)函數(shù)中的db為返回的person數(shù)據(jù)庫:
var dbURL = 'mongodb://localhost:27017/person';
var student = db.collection('student');
這樣寫在新版中會報錯: db.collection() is not a function.大概是廢除了揽惹。
在瀏覽器中訪問丰辣,然后用命令查看一下是否插入成功:
image.png
image.png
// 查
app.get('/query',function(req, res) {
MongoClient.connect(dbURL,function(err, db) {
assert.equal(err,null);
const person = db.db('person');
const student = person.collection('student');
student.find({}).toArray(function(error, docs) {
res.send(docs);
res.end();
db.close();
})
})
})
// 改
app.get('/update',function(req, res) {
MongoClient.connect(dbURL,function(err, db) {
assert.equal(err,null);
const person = db.db('person');
const student = person.collection('student');
student.updateOne({
"name": "insert in nodejs test03"
}, { $set: { "name" : "test" } }, function(error, result) {
var re = JSON.parse(result);
if (re.n === 1) {
res.send("修改成功袍镀。");
} else {
res.send("修改失敗,error:" + error);
}
res.end();
db.close();
})
})
})
// 刪
app.get('/delete',function(req, res) {
var query = url.parse(req.url,true).query;
var name = query.name;
MongoClient.connect(dbURL,function(err, db) {
assert.equal(err,null);
const person = db.db('person');
const student = person.collection('student');
student.deleteOne({ "name": name }, function(error, result) {
var re = JSON.parse(result);
if (re.n === 1) {
res.send("刪除成功。");
} else {
res.send("刪除失敗,error:" + error);
}
res.end();
db.close();
})
})
})
4.封裝一下:
/modules/db.js
var MongoClient = require('mongodb').MongoClient;
var dbUrl ='mongodb://localhost:27017';
function connectDb(callback) {
MongoClient.connect(dbUrl,function(err,db){
if(err) {
console.log('數(shù)據(jù)庫連接失敗');
return;
}
callback(db);
db.close();
})
}
exports.findOne = function(dbname,collectionname,json,callback){
connectDb(function(db) {
const DB = db.db(dbname);
const collection = DB.collection(collectionname);
var result = collection.findOne(json,null,callback);
});
}
exports.find = function(dbname,collectionname,json,callback) {
connectDb(function(db) {
const DB = db.db(dbname);
const collection = DB.collection(collectionname);
var result = collection.find(json).toArray(callback);
});
}
exports.insertOne = function(dbname,collectionname,json,callback){
connectDb(function(db) {
const DB = db.db(dbname);
const collection = DB.collection(collectionname);
collection.insertOne(json,callback)
})
}
然后在server.js中導(dǎo)入:
var DB = require('./modules/db.js');
使用:
app.post('/submit',function(req,res) {
var username = req.body.username;
var password = md5(req.body.password);
DB.findOne('person','userinfo',{"username":username, "password":password}, function(error, docs) {
if(docs === null) {
res.send("<script>alert('登錄失敗');location.href='/login'</script>");
} else {
req.session.userinfo = docs;
res.redirect('/product'); /*登錄成功跳轉(zhuǎn)到商品列表*/
}
});
})