要使用nodejs和mongodb,便需要事先下载软件并配置环境。
点击下载mongodb数据库
点击下载nodejs运行环境
可以直接跳过一~四,直接阅读五,若有疑惑,可返回阅读。
一、为什么使用nodejs和mongodb:
nodejs和mongodb与JavaScript的语言风格非常的相似,基本上会使用JavaScript,mongodb和nodejs的用法也会迅速掌握。
二、如何搭建数据库管理系统:
当安装完mongodb后,输入cmd指令打开终端,在bin目录下运行
//打开数据库服务器
mongod --dbpath C:/desktop/database //数据库路径
//连接至数据库管理系统
mongo
这样就在本地搭建了数据库管理系统,数据库位于C:/desktop/database。
连接成功会显示数据库的端口号:
具体可参考以下文档:
点击跳转学习mongodb
三、js文档中如何连接数据库:
var MongoClient = require("mongodb").MongoClient;
var dataurl = "mongodb://localhost:27017/";
var dbase, userdata;
function makeConnect() {
MongoClient.connect(dataurl, function(err, db) {
if (err) throw err;
console.log("数据库已经创建!");
//db参数为数据库管理系统
})
})
}
exports.makeConnect = makeConnect;
dataurl是数据库的端口号,通过db.db(“user_Data_Name”)方法来调用指定的数据库。
四、如何搭建服务器:
服务器需要在nodejs环境下运行,请事先下载并且安装nodejs运行环境
我们将服务器的构建分成3步:
1、引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。
2、创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。
3、接收请求与响应请求 服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据。
代码如下:
var http = require("http");
var fs = require("fs");
var url = require("url");
function start(router, handlers, dbbase) {
http.createServer(function(request, response) {
//服务器构建完毕
//此处可解析request,并且调用路由模块分配处理函数
}).listen(8080);
console.log("server is open on 8080");
}
exports.start = start;
http、fs、url是nodejs中的固有模块,若无法require,请在指令终端(cmd打开)的C盘根目录下执行npm install http,npm install fs,npm install url操作。
五、如何连接数据库和服务器
通过异步回调机制,先连接数据库,然后再通过回调函数进行构建服务器,并且将对应是数据库对象作为参数传入服务器中。
注意到上文两处代码引用都有出现exports,这意味着该js文件,可以被其他文件进行require,并且exprots中的方法,将可作为模块方法被调用。
我们另写一个index.js文件,作为总纲,在对应的文件夹下运行node index,便可连接数据库。
重写以上代码如下:
//连接数据库的代码,creatData.js文件
var MongoClient = require("mongodb").MongoClient;
var dataurl = "mongodb://localhost:27017/";
var dbase, userdata;
function makeConnect(buildServer) {
MongoClient.connect(dataurl, function(err, db) {
if (err) throw err;
console.log("数据库已经创建!");
//本人事先创建了studentData数据库,且数据库中有studentNumber集合。
dbase = db.db("studentData");
dbase.createCollection("studentNumber", function(err, res) {
if (err) throw err;
console.log("studentNumber集合已经创建!");
//使用回调函数
buildServer(dbase);
})
})
}
exports.makeConnect = makeConnect;
//构建服务器的代码,server.js文件
var http = require("http");
var fs = require("fs");
var url = require("url");
function start(dbbase) {
http.createServer(function(request, response) {
}).listen(8080);
console.log("server is open on 8080");
}
exports.start = start;
//index.js文件
var server = require("./server/server.js");
var createData = require("./datajs/creatData.js");
createData.makeConnect(function buildServer(dbbase) {
server.start(dbbase);
})
如果读者想赋予服务器更多的功能,可以在server.js中引用自己的路由js文件模块和处理函数js文件模块,这里不做阐述。