安装

首先要确保已经安装了 Node.js,接下来创建一个目录,然后进入此目录并将其作为当前工作目录。

mkdir myapp
cd myapp

通过 npm init 命令为应用创建一个 package.json 文件,指定入口文件为 index.js,然后一路回车确定即可。

npm init

接下来安装 Express 并将其保存到依赖列表中:

npm install express --save

创建 MongoDB 数据库

首先要确保安装了 MongoDB,并且把 mongoose 添加到 package.json 依赖里,

npm install mongoose --save

然后在CMD里执行下面命令

mongo //进入数据库
use express-demo //创建项目数据库
db.createCollection("users") //创建一个集合,也就是表
db.users.insert({userid: "admin", password: "123456"}) //给users里添加一个文档,也就是一条记录账号admin,密码123456

ok,现在检查一下:

db.users.find() //如果看到你刚刚添加的文档记录,就ok咯

搭建项目原型

进入myapp 目录,创建一个名为 index.js 的文件,此文件为入口文件,将下面代码复制进去;

var express = require('express');
var http = require('http')
var app = express();
var mongoose = require('mongoose');
var user = require('./models/user').user;
var bodyParser = require('body-parser'); mongoose.connect('mongodb://localhost/express-demo');
app.set('view engine', 'jade');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.get('/', (req, res) => {
res.render('index', {title: 'index'})
})
app.get('/login', (req, res) => {
res.render('login', {title: 'login'})
})
app.get('/loginout', (req, res) => {
res.render('loginout', {title: 'loginout'})
})
app.post('/homepage', (req, res) => {
var query_doc = {
userid: req.body.userid,
password: req.body.password
};
(function () {
user.count(query_doc, (err, doc) => {
if (doc == 1) {
console.log(query_doc.userid + ": login success in " + new Date());
res.render('homepage', {title: 'homepage'});
} else {
console.log(query_doc.userid + ": login failed in " + new Date());
res.render('error', {title: 'login error'})
}
});
})(query_doc);
})
var server = http.createServer(app); server.listen(3000, () => {
console.log('服务已启动')
})

上面这个index.js文件里,连接了 mongodb 并且创建了一个基本的服务器,设置了 jade 作为默认模板引擎;

然后,创建 models 文件夹,在models下创建一个user.js,作为实体类映射数据库的users集合;

var mongoose = require('mongoose')
var Schema = mongoose.Schema;
var userSchema = new Schema({
userid: String,
password: String
});
exports.user = mongoose.model('users', userSchema);

接下来,创建一个视图 views ,在 views 下面创建模板 index.jade、login.jade、loginout.jade、homepage.jade、error.jade,在模板里写出基本的页面,并引入 bootstrap 来美化页面;至此,基本大功告成了!

在cmd运行

node index.js

npm start

在浏览器打开 http://localhost:3000/ ,即可看到效果!

Github地址:https://github.com/jonechen1986/Node-Express-MongoDB

搭建简单的node+express+mongodb项目的更多相关文章

  1. Node+Express+MongoDB + Socket.io搭建实时聊天应用

    Node+Express+MongoDB + Socket.io搭建实时聊天应用 前言 本来开始写博客的时候只是想写一下关于MongoDB的使用总结的,后来觉得还不如干脆写一个node项目实战教程实战 ...

  2. Node+Express+MongoDB + Socket.io搭建实时聊天应用实战教程(二)--node解析与环境搭建

    前言 本来开始写博客的时候只是想写一下关于MongoDB的使用总结的,后来觉得还不如干脆写一个node项目实战教程实战.写教程一方面在自己写的过程中需要考虑更多的东西,另一方面希望能对node入门者有 ...

  3. Node.js Express+Mongodb 项目实战

    Node.js Express+Mongodb 项目实战 这是一个简单的商品管理系统的小项目,包含的功能还算挺全的,项目涵盖了登录.注册,图片上传以及对商品进行增.删.查.改等操作,对于新手来说是个很 ...

  4. 8 步搭建 Node.js + MongoDB 项目的自动化持续集成

    任何事情超过 90 秒就应该自动化,这是程序员的终极打开方式.Automating shapes smarter future. 这篇文章中,我们通过创建一个 Node.js + MongoDB 项目 ...

  5. Node+Express+MongoDB+Socket.io搭建实时聊天应用实战教程(一)--MongoDB入门

    前言 本文并不是网上流传的多少天学会MongoDB那种全面的教程,而意在总结这几天使用MongoDB的心得,给出一个完整的Node+Express+MongoDB+Socket.io搭建实时聊天应用实 ...

  6. node+express+mongodb初体验

    从去年11月份到现在,一直想去学习nodejs,在这段时间体验了gulp.grunt.yeomen,fis,但是对于nodejs深入的去学习,去开发项目总是断断续续. 今天花了一天的时间,去了解整理整 ...

  7. 使用node+express+mongodb实现用户注册、登录和验证功能

    无论是手机端还是pc端,几乎都包含登录注册方面功能,今天就使用node+express+mongodb实现一套登录注册功能,这里需要自己去安装MongoDB环境,如果没有安装可以看这篇关于MongoD ...

  8. 基于react全家桶+antd-design+webpack2+node+express+mongodb开发的前后台博客系统

    很久没更新博客,最近也有点忙,然后业余时间搞了一个比较完整基于react全家桶+antd-design+webpack2+node+express+mongodb开发的前后台博客系统的流程系统,希望对 ...

  9. Node+Express+MongoDB + Socket.io搭建实时聊天应用实战教程(三)--前后端环境配置

    前言 之前都是介绍一些基础知识,在这一节,我们就要开始实战coding了.正所谓磨刀不误砍柴工,准备工作显得尤为重要.很多demo只是追求效果的实现,并不注重整个demo的架构性.从我个人的角度看来, ...

随机推荐

  1. C++ Primer Plus学习:第五章

    C++入门第五章:循环和关系表达式 for循环 for循环的组成部分 设置初始值. 执行测试,看循环是否应该继续执行. 执行循环操作. 更新用于测试的值. 以上操作由括号括起,每个部分均是一个表达式, ...

  2. C语言文法阅读与理解

    <翻译单元>--><外部声明>--><函数定义>|<申报> <函数定义>--><声明说明符>-->< ...

  3. 软工网络15团队作业4-DAY3

    昨天的工作. 张陈东芳:数据库连接的检查 吴敏烽:商品实体类的检查 周汉麟:继续研究获取商品信息方法的方法和调试 林振斌:继续研究获取商品信息方法的方法和调试 李智:Cookies的检查 全体人员:优 ...

  4. Splash广告界面

    在软件开始启动时都是会使用一个splashActivity实现联网判断和相关资源的加载,在一款网络软件上开始时的缓存加载和网络判断可以为用户节省不必要的流量开销. 使用handler延时启动下一个ac ...

  5. LR之Java Vuser II

    最近项目待压测的服务端协议使用的是java的Netty框架开发,而传输的业务数据使用了google protobuf进行序列化,然后通过tcp数据流与客户端通讯.这一次的压测脚本决定使用LR的java ...

  6. TDDL实践

    使用入门-数据源配置 数据源配置,tddl的入口,从datasource切入 <bean id="tddlDataSource" class="com.taobao ...

  7. 【Python】python操作mysql

    pymysql模块对mysql进行 import pymysql # 创建连接 conn = pymysql.connect(host=, user='root', passwd='root', db ...

  8. 使用Appium上传/下载文件(push文件、pull文件)

    package com.lx.class1; import java.io.File; import java.io.IOException; import java.net.URL; import ...

  9. 洛谷P1658 购物

    题目戳 题目描述 你就要去购物了,现在你手上有N种不同面值的硬币,每种硬币有无限多个.为了方便购物,你希望带尽量少的硬币,但要能组合出1到X之间的任意值. 输入输出格式 输入格式: 第一行两个数X.N ...

  10. "XX cannot be resolved to a type "eclipse报错及解决

    好久都没有写博了,还记得自己准备考研,结果你会发现——你永远不知道,你将会走上哪个路. 长远的目标是好的,但有些时候身不由己也迫不得已!做好自己的当下就是好的. 不论搞什么,总会遇到各种各样的问题,以 ...