node.js(express)连接mongoDB入门指导

一、写在前面

人人都想成为全栈码农,作为一个web前端开发人员,通往全栈的简洁之路,貌似就是node.js了。前段时间学习了node.js,来谈谈新手如何快速的搭建自己的web服务,开启全栈之路。

二、安装node.js

接触过后端开发的人都知道,首先要安装服务。作为新手,肯定是选择最简单的可视化安装了(傻瓜式下一步,其它的方式等熟悉相关操作后自然就会了的),通过官网http://nodejs.org/dist/v0.6.1/node-v0.6.1.msi 下载电脑适配的安装包(这个是windows的,买不起mac啊),然后根据引导安装就可以了,默认安装在C:\Program Files\nodejs文件下,并将该目录添加进PATH环境变量。具体做法,右击”我的电脑“-”属性“-“系统高级”-”高级“-”环境变量“-选择“变量名:PATH”;“改变量值:在最后面添加【C:\Program Files\nodejs】(根据自己的安装目录而定)”。打开cmd直接运行命令:

node -v   可以输出当前版本号。node文件里已经集成了npm,之后使用npm install XXX 来安装需要的插件或者模块。

三、使用express框架

忙活了一阵,终于可用npm命令进行初始化、安装express框架,然后写个hello world 爽一下了。为什么要选择express框架了,当然有它的特别之处,对新手来说最怕的就是麻烦还容易出错。express当然为我们考虑到了,所以提供了快速生成器:express-generator

1、通过命令:npm install express-generator -g 安装到全局

2、在用express 命令生成项目结构

  express myapp 其中的myapp是你的项目名称

3、通过cd myapp 进入项目文件中

  通过npm install 初始化依赖模块

  通过set DEBUG=myapp & npm start 启动web服务器

4、在浏览器中打开 http://localhost:3000/ 网址就可以看到这个应用了。

 默认情况下用的模版引擎是jade,项目里也已经配置好了这个模版,看看jade的使用语法,https://segmentfault.com/a/1190000000357534 这个的文档不错。express官方网站http://www.expressjs.com.cn/

四、介绍express 生成器的项目

1、myapp项目的机构如下:

2、package.json 这个可以说是模块管理包,项目信息和模块的版本号,其实你会发现在项目模块初始化的时候就是由这里的配置去查找生成的。

3、app.js 是项目的启动文件,可以说是项目的核心。主要写一些公共的功能。

4、bin 文件下有个无后缀的www文件,这是项目的入口文件,配置web服务端口和一些监听事件。

5、node_modules是项目的依赖的的文件模块,之后导入的包也会被放在其中,比如连接数据库的mongoose模块,后面会详细讲。

6、public 是项目的静态资源文件集,很容易看出图片、css文件、js文件都放在这里。

7、routes 是项目的路由模块,其中已经默认了index.js和user.js文件。在这里其实也包括一般后台语言中的控制器内容,当然在大的项目上是可以分离开来的。

8、views是项目的模版文件,是jade模版引擎,这个模版很简洁,但是坑也比较多,比如对空格的要求都非常严格,多一个少一个空格都会报错的,曾经踩过很多坑,其实它的性能也不是很高还不如用ejs呢。

五、安装mongoDB

1、同样在官网(http://www.mongodb.org/downloads)上直接下载msi文件

2、简单的下一步进行安装,有默认的就让其默认,有选择的就全选了

3、然后配置环境变量,和node的一样不再累述,不过可以放中图,哈哈哈……

4、接下来是启动mongoDB服务

5、通过命令:mongod --dbpath f:\MongoDB\data 其中 f:\MongoDB\data是文件存放路径,看到如下信息说明成功了

6、MongoDB监听的是27017端口,同时打开浏览器输入http://127.0.0.1:27017,则会看到如下提示:

  It looks like you are trying to access MongoDB over HTTP on the native driver port.

7、然后,再打开一个cmd,输入mongo命令链接数据库,出现如下提示:

  2015-05-02T17:10:19.467+0800 I CONTROL Hotfix KB2731284 or later update is not installed, will zero-out data files MongoDB shell version: 3.0.2 connecting to: test

8、这样windows环境下的monogDB就安装成功了。

补充:

9、如果你嫌每次用命令打开服务麻烦的话,可以写成批处理文件,就是新建一个后缀.bat的文件,写上如下代码:

  start mongod --dbpath F:\MongoDB\data

10、当然了,你也可以将MongoDB以服务的方式启动,不过我觉得在学习的过程中用处不大,小伙伴们可以自己尝试一下,如果有需要的话,我在后面会补上。

11、要是觉得命令行不好用,推荐一个带图形化界面的软件:MongoVUE,就和navicat差不多,它有免费版的,就是功能少点,但学习过程中完全足够了
  传送门:http://www.mongovue.com/

可参考:安装https://segmentfault.com/a/1190000002744306、语法http://www.cnblogs.com/xusir/archive/2012/12/24/2830957.html

六、在node项目中使用monogDB

1、导入monogDB连接模块,express 官方介绍的是mongoskin模块,这个我就不说了,这里介绍通过mongoose安装

2、在myapp项目下执行命令 npm install mongoose -save 安装保存到node_modules,也可以在package.json中配置"mongoose": "^4.4.12",然后命令npm install 安装。https://github.com/Automattic/mongoose

3、在app.js文件中

 a、导入mongoose模块:

1 var mongoose = require(‘mongoose‘);

b、创建数据库连接

mongoose.connect(‘mongodb://localhost/myDB‘) //连接本地数据库

4、在项目根目录下新建文件夹schemas,这个是数据集模块,在模块下新建users.js文件

 1 var mongoose = require(‘mongoose‘);
 2
 3 //申明一个mongoons对象
 4 var UsersSchema = new mongoose.Schema({
 5     name: String,
 6     paw: String,
 7     meta: {
 8         createAt: {
 9             type: Date,
10             default: Date.now()
11         },
12         updateAt: {
13             type: Date,
14             default: Date.now()
15         }
16     }
17 })
18
19 //每次执行都会调用,时间更新操作
20 UsersSchema.pre(‘save‘, function(next) {
21     if(this.isNew) {
22         this.meta.createAt = this.meta.updateAt = Date.now();
23     }else {
24         this.meta.updateAt = Date.now();
25     }
26
27     next();
28 })
29
30 //查询的静态方法
31 UsersSchema.statics = {
32     fetch: function(cb) { //查询所有数据
33         return this
34           .find()
35           .sort(‘meta.updateAt‘) //排序
36           .exec(cb) //回调
37     },
38     findById: function(id, cb) { //根据id查询单条数据
39         return this
40           .findOne({_id: id})
41           .exec(cb)
42     }
43 }
44
45 //暴露出去的方法
46 module.exports = UsersSchema

5、在根目录新增modules文件,这个是数据模型模块,在模块下新增users.js文件

1 var mongoose = require(‘mongoose‘)
2 var UsersSchema = require(‘../schemas/users‘) //拿到导出的数据集模块
3 var Users = mongoose.model(‘Users‘, UsersSchema) // 编译生成Movie 模型
4
5 module.exports = Users

6、在routes文件中的users.js文件中添加路由控制器代码

 1 var express = require(‘express‘);
 2 var mongoose = require(‘mongoose‘);//导入mongoose模块
 3
 4 var Users = require(‘../models/users‘);//导入模型数据模块
 5
 6 var router = express.Router();
 7
 8 /* GET users listing. */
 9 router.get(‘/‘, function(req, res, next) {
10   res.send(‘respond with a resource‘);
11 });
12
13 //查询所有用户数据
14 router.get(‘/users‘, function(req, res, next) {
15     Users.fetch(function(err, users) {
16         if(err) {
17             console.log(err);
18         }
19         res.render(‘users‘,{title: ‘用户列表‘, users: users})  //这里也可以json的格式直接返回数据res.json({data: users});
20     })
21 })
22 module.exports = router;

7、在views文件下新增users.jade

1 extends layout
2
3 block content
4   h1= title //jade取值方式
5   ul
6     each user in users //jade模版的遍历方式
7       li
8         h4 #{user.name}
9         span #{user.paw}

8、最后在浏览器中打开网址:http://localhost:3000/users/users,查看效果。到这里一个从数据库到前端展现的项目就完成了。

七、结语

  作为一名技术人员,养成总结、共享的习惯都是提升自己,帮助他人的美事。本期的源码待我整理之后会放到github上,想先要的的可以私信我。node模块此后会继续更新,包括mongoDB的模块、 异步操作模块、bootstrap集成模块、angularJS集成模块,敬请期待……

时间: 2024-10-14 03:40:50

node.js(express)连接mongoDB入门指导的相关文章

[node.js]express+mongoose+mongodb的开发笔记

时间过得很快,6月和7月忙的不可开交,糟心的事儿也是不少,杭州大连来回飞,也是呵呵. 希望下个阶段能沉浸下来,接着学自己想学的.记一下上几周用了几天时间写的课设.因为课设的缘故,所以在短时间里了解下express+mongodb的组合,给APP端搭了个简易的服务器,也开了后台网站的web服务.简单总结一下开发过程中遇到的坑. 一.关于express了解node.js有半年多,第一次用node.js的框架来写server,了解不是很深,简单看了一下文档之后就可以上手了,开发入门难度低.1.运行ex

node.js + express(ejs) + mongodb(mongoose) 增删改实例

刚学node不久,以下是对最近学习的总结,不足的地方还请见谅. node 和 mongodb安装不做为本文讲解,想了解的朋友可以通过一下链接配置环境: node 安装:http://www.infoq.com/cn/articles/nodejs-npm-install-config Win7下MongoDB安装 :http://www.mkyong.com/mongodb/how-to-install-mongodb-on-windows/ MongoDB 安装步骤总结: 1.解压目录到d盘

[MEAN Stack] First API with Node.js, Express and MongoDB

Learn how to import data into your MongoDB and then use Express to serve a simple Node.js API. Import data into MongoDB: For exmaple, you have an data.json file and contains some data. 1. Start Mongod service: //in the cmd $ mongod 2. Open a new Tab,

Node.js、express、mongodb 入门(基于easyui datagrid增删改查)

前言 从在本机(win8.1)环境安装相关环境到做完这个demo大概不到两周时间,刚开始只是在本机安装环境并没有敲个Demo,从周末开始断断续续的想写一个,按照惯性思维就写一个增删改查吧,一方面是体验下node.js的魔力,二就是看看node.js.express和mongoose的API,其次就是把自己入门的过程记录下来,方便自己查看,再就是对入门的朋友起一个引导的作用. 敲demo的过程中感觉最爽的就是npm(Node Package Manager)是一个Node.js的包管理和分发工具.

node.js高级编程|node.js 视频教程_基于node.js+Express.js+Jade+MongoDB实战开发

基于node.js+Express.js+Jade+MongoDB开发Web即时聊天系统课程讲师:幻星课程分类:前端开发适合人群:初级课时数量:36课时更新程度:完成用到技术:Node.js NPM. Express.NoSQL,MongoDB涉及项目:匿名聊天网站系统node.js视频教程:http://www.ibeifeng.com/goods-462.htmlnode.js 教程适合人群:node.js视频教程要求学员了解JavaScript,node.js入门教程适合希望更深入的学习N

Node.js+Express+MongoDB数据库实现网页注册登入功能

通过 Node.js + Express + MongoDB 实现网页注册账号 和 登入账号的功能 项目准备: 1: 事先准备好项目的页面 (首页页面 index.html)(登入页面 login.html) (注册页面 register.html) 2:    安装好 Node.js 需要使用的第三方模板 3:  设计路径设计 4:  理清功能需求 5:  创建 app.js  router.js   mgdb.js 三个 js 文件  和 public 和 views 文件夹 作用: app

基于 Node.js + Express + mongoDB + Bootstrap 搭建的电影网站

电影网站 ?? GitHub: https://github.com/bxm0927/movie-website 此项目是基于 Node.js + Express + mongoDB + Bootstrap 搭建的电影网站. 主要功能模块: 一期:前台电影展示页.电影详情页.后台电影管理中心(电影录入.电影修改) 二期:用户登录注册注销功能.用户识别和持久化.后台用户管理中心(用户录入.用户修改).电影评论 <!-- more --> 图片预览 技术栈 [前端] HTML/CSS/JS:亘古不

Node.js Express+Mongodb 项目实战

Node.js Express+Mongodb 项目实战 这是一个简单的商品管理系统的小项目,包含的功能还算挺全的,项目涵盖了登录.注册,图片上传以及对商品进行增.删.查.改等操作,对于新手来说是个很不错的练手项目,分享给大家. GitHub源码:https://github.com/oceanMin/cms 项目前准备 安装node.js 安装express 安装mongoDB 章节目录 快速开始 快速开始 模块 express商品管理系统介绍 框架搭建.ejs .express.static

Node.js, Express的服务器搭建过程的问题

Node.js, Express的服务器搭建过程的问题 Express : node.js 的框架,根据2012年BYvoid的说法,是node.js官方唯一推荐的框架 怎么搭建项目? - 安装nodejs->npm->express - express 的问题: 2017年, express-generator已经被独立成命令行工具了,所以要用 npm install express-generator 这样才能用express命令 怎么启动项目? 启动服务器可以用node app.js,因