定义

Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行的数据密集型的实时应用。

MongoDB是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

环境安装:基于Mac OS X系统

nodejs的安装非常简单,去官网下载安装文件进行安装即可,同时自带了npm(node package manager)工具。

mongodb的安装稍微有点复杂,需要用到homebrew。homebrew 简称brew,是Mac OS X上的软件包管理工具,以最简单和灵活的方式,在 Mac OS X 安装 linux 工具包。

第一次安装homebrew,打开终端,输入以下命令

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

如果以前安装过homebrew,记得更新homebrew

brew update

安装mongodb

brew install mongodb

创建数据存放目录

mkdir -p /data/db

运行mongodb

mongod

出现异常:文件夹目录拒绝访问,权限不够。

2015-12-05T10:12:49.585+0800 I STORAGE  [initandlisten] exception in initAndListen: 98 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
 2015-12-05T10:12:49.586+0800 I CONTROL  [initandlisten] dbexit:  rc: 100

解决方法:需要手动将文件夹的权限设置为读和写。选中文件夹data、db,快捷键command+opition+i,弹出文件夹的简介,修改其中everyone的权限为读和写。

启动mongodb后台管理

mongo

出现异常:不能连接mongodb,连接失败。

MongoDB shell version: 3.0.7
connecting to: test
2015-12-05T11:24:01.021+0800 W NETWORK  Failed to connect to 127.0.0.1:27017, reason: errno:61 Connection refused
2015-12-05T11:24:01.025+0800 E QUERY    Error: couldn't connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed
    at connect (src/mongo/shell/mongo.js:179:14)
    at (connect):1:6 at src/mongo/shell/mongo.js:179
exception: connect failed

原因:Mac OS X系统没有自启动mongodb服务。

brew services start mongodb

国内的问答社区,解决不了问题。只能访问:来自stackoverflow的问答。缺点是:国内的访问速度有点慢,甚至打不开。

如何在windows中添加mongodb服务

mongod --dbpath "C:\data\db" --logpath "C:\data\log\MongoDB.log" --install --serviceName "MongoDB"

nodejs如何访问mongodb数据库?

首先得通过npm安装mongoose模块。

$npm install mongoose

mongoose是为nodejs而生的mongodb对象建模工具,可以定义一些Schema(定义每个doc里的字段名、类型、初始值、验证条件等),增删改查等,功能比较强大。

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
var Cat = mongoose.model('Cat', {
    name: String
});
var kitty = new Cat({
    name: 'Zildjian'
});
kitty.save(function(err) {
    if (err) // ...
    console.log('meow');
});

如上面的示例,运用.save的方法,就可以将kitty的数据保存到本地test的数据表。

项目开发
后端框架
前后端交互
路由
配置文件