通过上一篇经济基础构建的完成,那么如今正式开始码代码吧!node
首先创建/server/app.js文件,先把起服务所需的模块引入进来,如下介绍两种起HTTP服务的方法。mysql
1.使用Node.js 内在模块httpweb
var http = require('http'); http.createServer(function (request, response) { // 发送响应数据 "Hello Node.js" response.end('Hello Node.js'); }).listen(8888); // 监听8888端口 // 终端打印以下信息 console.log('Server running at http://127.0.0.1:8888/');
2.使用express框架
本项目使用node.js的express框架来起HTTP服务器。express官网,内有对应的简单教程、API等,可自行查阅sql
const express = require('express'), //加载express模块 app = express(); //启动一个web服务器 app.get('/',function(req,res){ res.send('Hello Node.js'); }) const server = app.listen(3000,function(){ let port = server.address().port; console.log('app listening at http://%s:%s','localhost',port); });
保存后,命令行进入app.js文件所在文件夹,运行命令node app.js
,而后浏览器访问http://localhost:3000,即会查看到返回'Hello Node.js'。mongodb
为了测试方便,咱们首先要往咱们本地的MongoDB数据库中插入一些数据。为了方便使用,MongoDB也有相似mysql navicat的图形化管理工具Robomongo 1.0.0,下载地址:https://robomongo.org/download,下载安装便可。数据库
1.打开Robomongo,点击左上角file->connect(快捷键ctrl+N),在弹出来的框中点击create来建立链接。express
2.输入链接名字,以及地址名,端口默认为27017,地址address和端口通常不用更改。segmentfault
这样test为名字的MongoDB链接就建立了。浏览器
3.MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。MongoDB和日常使用的MySQL是有比较大的区别的:服务器
4.咱们首先点击左侧刚刚建立的test链接,鼠标右键单击 create database,输入是数据库名testDb点击create建立便可。
5.鼠标左键单击刚刚建立的testDb数据库,建立collection(即为日常使用的数据库中所说的table表),点击create便可建立user 集合成功。
6.下面咱们开始往user collection集合中插入数据:鼠标右键单击user collection -> insert documet(插入文档,即咱们日常使用的sql数据库中的行)。
7.MongoDB数据库中文档(每一行的数据)的数据结构和JSON基本同样,全部存储在集合中的数据都是BSON格式,BSON是一种类JSON的一种二进制形式的存储格式,简称Binary JSON。所以,咱们在插入数据时,只要像JSON格式那样输入咱们想要插入的数据。点击save保存便可成功插入数据。
{ userName:'dodo', sex:18, sex:'女', job:'font-end Engineer' }
8.双击user collection便可看到咱们刚刚插入的那条数据,MongoDB的主键自动将_id字段设置为主键。
1.使用MongoDB原生自带的API来建立链接,直接在/server/app.js输入如下代码
var MongoClient = require('mongodb').MongoClient, DB_CONN_STR = 'mongodb://localhost:27017/testDb'; # 数据库为 testDb var selectData = function(db, callback) { //链接到user表 var collection = db.collection('user'); //查询数据 var whereStr = {"userName":'dodo'}; collection.find(whereStr).toArray(function(err, result) { if(err) { console.log('Error:'+ err); return; } callback(result); }); } MongoClient.connect(DB_CONN_STR, function(err, db) { console.log("链接成功!"); selectData(db, function(result) { console.log(result); db.close(); }); });
2.本项目使用Mongoose来配合MongoDB操做数据库
mongoose是mongoDB的一个对象模型工具,是基于node-mongodb-native开发的mongoDB的nodejs驱动,能够在异步的环境下执行。同时它也是针对mongoDB操做的一个对象模型库,封装了mongoDB对文档的一些增删改查等经常使用方法,让nodejs操做mongoDB数据库变得更加容易。
// 加载所须要的模块 const mongoose = require('mongoose'); mongoose.Promise = require('bluebird'); const Schema = mongoose.Schema; const UserSchema = new mongoose.Schema({ username: String,//用户名 sex: String,// 性别 age: Number, // 年龄 },{collection:'user'}) // 注意这里必定要带有collection,不然mongoose会在下面model时对user添加后缀s. const Models = { User : mongoose.model('user', UserSchema) }; /** * 建立数据库名称并链接 * Connecting to Mongod instance. */ const dbHost = 'mongodb://localhost/testDb'; mongoose.connect(dbHost); const db = mongoose.connection; db.on('error', function () { console.log('Database connection error.'); }); db.once('open', function () { console.log('The Database has connected.') }); module.exports = Models;