前言
最近学习了Node.js,并且接触了MongoDB,因此想做一个浏览器访问一个http地址获取数据库里的数据的例子,本文使用的是Node.js作为接口
具体内容
Node.js要准备的东西
express模块,可以参考http://www.runoob.com/nodejs/nodejs-express-framework.html获取
mongodb模块,可以参考http://www.runoob.com/nodejs/nodejs-mongodb.html获取
代码片
- 创建 express_demo.js文件
var express = require('express');
var utils = require('./utils');
var app = express();
var url = require('url');
var MongoClient = require('mongodb').MongoClient;
var DB_CONN_STR = 'mongodb://localhost:27017/runoob';
app.use(express.static('public'));
// /user 页面响应
app.get('/user', function (req, res) {
//查询数据
var selectData = function(db, callback) {
//连接到表
var collection = db.collection('site');
//查询数据
var params = url.parse(req.url, true).query;
//从浏览器获得的参数
var name = params['name'];
var whereStr = {};
whereStr.name = name;
collection.find(whereStr).toArray(function(err, result) {
if(err)
{
console.log(err);
return;
}
callback(result);
});
}
MongoClient.connect(DB_CONN_STR, function(err, db) {
console.log("连接成功!");
selectData(db, function(result) {
// console.log(result);
if(utils.isEmptyObject(result)){
res.end("name不存在");
}else{
res.end(JSON.stringify(result));
}
db.close();
});
});
})
var server = app.listen(8080,"0.0.0.0", function () {
var host = server.address().address
var port = server.address().port
console.log("应用实例,访问地址为 http://%s:%s", host, port)
})
上面的代码有个
var utils = require('./utils');
这个是我写的一个判断JSON是否为空的函数,具体内容
utils.js文件
exports.isEmptyObject = function(e) {
var t;
for (t in e)
return !1;
return !0
}
其中exports代表该函数可被外部调用
- 在MongDB中创建数据库并且插入数据
mongodb.js
var MongoClient = require('mongodb').MongoClient;
var DB_CONN_STR = 'mongodb://localhost:27017/runoob';
插入数据到表
var insertData = function(db, callback) {
//连接到表 site
var collection = db.collection('site');
//插入数据
var data = [{"name":"菜鸟教程","url":"www.runoob.com","likes":100},{"name":"菜鸟工具","url":"c.runoob.com","likes":100}];
collection.insert(data, function(err, result) {
if(err)
{
console.log('Error:'+ err);
return;
}
callback(result);
});
}
MongoClient.connect(DB_CONN_STR, function(err, db) {
console.log("连接成功!");
insertData(db, function(result) {
console.log(result);
db.close();
});
});
- 开启express_demo.js脚本,在node.js终端中输入
node express_demo.js
* get测试工具使用postman
- 结果
这样就实现了使用node.js+mongoDB实现http请求获取数据库内容的demo,学会了感觉很简单