近期在看NodeJS相关

不得不说NodeJS+Express 进行网站开发是很不错,对于喜欢玩JS的来说真是很好的一种Web开发组合

在接触NodeJS时受平时Java或者C#中API接口等开发的思维惯性,类比着去学习了解发现其实很多都是通性的

特别是NodeJS中一个JS文件中方法通过exports可以在其他文件中进行require这种机制,不就类似Java中import(导入架包/引用类)?不就类似C#中Using(DLL组件或者引用类)么?

MVC模式下Web开发,其中对应在NodeJS中的路由(Router)不就是Controller? 其它M/V中想想都是一样,这样去一类比其实上手就赶脚一通百通

接下来就是些特定语言有特定的实现方式语法及特色

个人觉得在复杂的工程:其实前后端分离后,不就是后端怎么CRUD数据?前端怎么去使用接口回显数据对其交互等等;

工程的复杂性主要体现在业务逻辑实现/数据安全/Web性能/体验等等等吧

----扯多了-----------------------------------------------------

//在接触学习中,首先尝试了怎么去搭建工程连接数据库

下面就练手Test 做一个简单的Demo总结一下

适合新手刚开始接触的人

在Demo中主要是实现了怎么连接MongoDB数据库以及从数据库回显数据/还有往数据库中写入数据

//算是入门级的Demo走通了数据录入及回显

如下图:左侧展示录入的数据//右侧填写数据后点击OK 按钮数据就写入数据库

测试的录入的数据

//------------------------------------------------------------------------------------------------------------------------------------------------------------

首先环境安装啥的在理就不在赘述哈

创建Express 【Ejs模板的】工程 及Npm MongoDB 后 搭建对应文件夹【图中我的工程里面就加了一个Models】

关于其他文件夹百度上有很多对应说明介绍

//工程中我就采用默认路由 Index 【另外一个Users 我在程序入口 App.js中注释掉了(没啥业务含量用不上)】

首先是Models目录中

创建了个连接MongoDB数据库及构建数据

【上图中 TestDB.js 内容】

 /**
* Created by Yi on 2017/5/8.
*/ //testDB Model //创建 mongodb数据库连接 var mongoose = require('mongoose');
var DB = mongoose.connect('mongodb://localhost:27017/testAppDB');//红色为数据库名 //
mongoose.connection.on("open", function () {
console.log("数据库连接成功");
}); //
mongoose.connection.on("error", function (error) {
console.log("数据库连接失败" + error);
});

//创建数据文档模板【在SQL数据库中 即一个表(列名字段等) NoSQL数据库中即数据文档(成员变量名)】
var testSchema = new mongoose.Schema({
SortID: {type: String},
Name: {type: String},
Sex: {type: String},
Address: {type: String},
timeDate: {type: Date, default: Date.now()}
}); module.exports = mongoose.model('TestModel', testSchema);

//下面在构造一个数据Model“类”

 /**
* Created by Yi on 2017/5/8.
*/ // 上传/回显数据通用 数据Model
var tempModel = {
SortID: "",
Name: "",
Sex: "",
Address: "",
timeDate: ""
}; module.exports = tempModel;

Router【即 Controller 层】

 var express = require('express');
var router = express.Router(); //引用连接数据库Model
var TestModel = require('../models/testDB'); // test 数据 // var resData = [];
// resData.push(
// {
// SortID: "1",
// Name: "A",
// Sex: "女",
// Address: "SSS",
// timeDate: "05-08"
// }
// );
// resData.push(
// {
// SortID: "2",
// Name: "B",
// Sex: "男",
// Address: "XXX",
// timeDate: "05-08"
// }
// ); // 初始化回显 数据库已录入数据
router.get('/', function (req, res, next) {
// res.render('testDB', {title: 'Express'});
TestModel.find({}, function (err, resData) {
if (err) return next(err);
res.render('index', {
title: "TestDB",
testData: resData
});
});
}); //1 可以直接用Form表单方式提交数据
//2 或者通过页面脚本绑定事件响应结合JQuery的Ajax
// 实现调用路由(controller)接口将数据写入数据库
//一般开发中会在页面脚本中调用很多其他或者外部接口//【该方式比较常用 即就把路由方法当成一个对外的接口】
 router.post('/insert', function (req, res) {
var params = req.body;
//MogoDB中可以用Create方法添加数据
TestModel.create(params, function (err) {
if (err) res.end('{result:-1}');
else {
TestModel.find({}, function (error, data) {
if (error) res.end('{result:-1}');
else {
res.end('{result:1,data:' + data + '}');
}
});
}
});
});
module.exports = router;

View

我这直接在Index中修改页面【创建Express时采用的Ejs模板】当然用Html的也可以都是一样的

 <!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title><%= title %></title>
<link rel="stylesheet" href="/css/style.css">
</head>
<body> <div id="ShowDataArea">
<h4>此处展示 录入的数据 (用Ejs模板方式)</h4>
<span>多条数据采用forEach处理</span>
<% testData.forEach(function(testModel){ %>
<ul>
<li><span>编号</span><span><%= testModel.SortID %></span></li>
<li><span>姓名</span><span><%= testModel.Name %></span></li>
<li><span>性别</span><span><%= testModel.Sex %></span></li>
<li><span>地址</span><span><%= testModel.Address %></span></li>
</ul>
<% }) %> </div>
<div id="ShowArea">
<h4>采用 <%= title %> 测试Node - MongoDB 数据 写入/修改/删除/回显等</h4>
<hr>
<div id="SortID"><span>编号</span><input type="text" placeholder="编号"/></div>
<div id="Name"><span>姓名</span><input type="text" placeholder="姓名"/></div>
<div id="Sex"><span>性别</span><input type="text" placeholder="性别"/></div>
<div id="Address"><span>地址</span><input type="text" placeholder="地址"/></div>
<button id="uploadData">OK</button>
</div> </body>
<script type="text/javascript" src="/plug-in/jquery-1.9.1.js"></script>
<script type="text/javascript" src="/js/testPage.js"></script>
<!--页面JS如下-->
  </html>

页面脚本:JS

 var tempModel = {
SortID: "",
Name: "",
Sex: "",
Address: "",
timeDate: ""
}; $(function () {
$("#uploadData").on("click", function () {
alert("上传数据到MongoDB中");
//构造数据类
tempModel.SortID = $("#SortID").find("input").val();
tempModel.Name = $("#Name").find("input").val();
tempModel.Sex = $("#Sex").find("input").val();
tempModel.Address = $("#Address").find("input").val();
tempModel.timeDate = Date.now(); //通过Ajax更新数据
$.ajax({
type: 'post',
// url: "http://localhost:3000/insert",
url: "/insert",
dataType: "json",
data: tempModel,
success: function (resData) {
if (resData.result == 1) {
//更新页面列表
alert('resData');
}
},
error: function (error) {
alert('error:' + error);
}
});
});
});

//现在在回过来想想,结合常规MVC模式的Web开发去类比,这不就是一回事哈~~

//初版Demo

//后期NodeJS学习了解中会根据掌握,继续添加相应模块

NodeJS+Express+MongoDB 简单实现数据录入及回显展示【适合新人刚接触学习】的更多相关文章

  1. nodejs+express+mongodb简单的例子

    简单的介绍下node+express+mongodb这三个东西.node:是运行在服务器端的程序语言,表面上看过去就是javascript一样的东西,但是呢,确实就是服务器语言,个人觉得在一定层次上比 ...

  2. NodeJS+Express+MongoDB 简单个人博客系统【Study笔记】

    Blog 个人博客系统 iBlog是在学习NodeJs时候一个练手项目Demo 系统支持用户注册/登录,内容文章查看,评论,后台管理(定制显示的分类版块,进行文章内容添加)超级管理员还可进行用户管理等 ...

  3. NodeJS+Express+MongoDB

    一.MongoDB MongoDB是开源,高性能的NoSQL数据库:支持索引.集群.复制和故障转移.各种语言的驱动程序丰富:高伸缩性:MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言 ...

  4. 【重点突破】—— Nodejs+Express+MongoDB的使用基础

    前言:最近学习vue和react的高阶项目,都需要和Nodejs+Express+MongoDB结合实现全栈开发.这里结合实例Demo和所学项目集中总结一下这部分服务端的基础知识. 一.Express ...

  5. nodejs+express+mongodb实现登录注册

    nodejs+express+mongodb实现登录注册 1 简介 登录注册功能使用nodejs+express+mongodb完成,其中对mongodb的操作使用mongoose完成,对mongod ...

  6. 从无到有,用Nodejs+express+mongodb搭建简易登陆系统

    前端处理server表示很蛋疼,初学Node,虽然感觉异常强大,但是学起来还是有些吃力的,Node是工具,它不是万能的,搭建一个系统还是需要借助其他一些工具,对于我这个没怎么接触server的前端来说 ...

  7. NodeJs+Express实现简单的Web增删改查

    前一段时间,公司组织了一次NodeJs的技术分享,自己有幸去听了听,第一次接触NodeJs,后来经过自己学习和探索,完成了一个很简单的Web演示项目,在这里和初学者做以分享,开发工具:WebStorm ...

  8. Nodejs&express+mongodb完成简单用户登录(即Nodejs入门)

    刚了解nodejs,发现nodejs配置起来不复杂,但也有很多需要注意的地方,今天就记录一下,以后也可拿出来看看. 要完成这个简单的示例,从零开始,走三步就行了. 一.搭建开发环境 二.创建项目(ex ...

  9. nodejs+express+mongodb写api接口的简单尝试

    1:启动mongodb服务 我的mongoDB的安装目录:E:\mongoDB\bin,版本:3.4.9 打开cmd  -> e:(进入e盘) -> cd mongoDB/bin(进入mo ...

随机推荐

  1. QT Creator 快速入门教程 读书笔记(二)

    一 窗口部件 基础窗口部件QWidget类是所有用户界面对象的基类,窗口和控件都是直接或间接继承自 QWidget,下面我们来看一个很简单的例子: 窗口部件(Widget)简称部件,是QT中建立界面的 ...

  2. php流程管理练习

    今天我们做一个流程管理: 1.流程管理的用法是什么样的? 2.怎么发起想要的流程? 3.审批的人要是怎么审批通过? 4.流程审核是不是要挨个走过? 一. 做这个流程管理肯定要有数据库: 二.数据库结束 ...

  3. 浅谈js中的浅拷贝和深拷贝

    在js中如何把一个对象里的属性和方法复制给另一个对象呢? 下面举一个例子来说明: var person={name:'chen',age:18}; var son={sex:'男'}; functio ...

  4. 安装IPython攻略

    由于对python自带的idle不太满意,看到有介绍说ipython不错,于是想装一个试试. 机器上该装的扩展包都已经装好了,比如setuptools,matplotlib,环境变量配置,所以安装起来 ...

  5. 如何进行SQL性能优化

    在SQL查询中,为了提高查询的效率,我们常常采取一些措施对查询语句进行SQL性能优化.本文我们总结了一些优化措施,接下来我们就一一介绍. 1.查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE ...

  6. WebApi client 的面向切面编程

    .Net的面向切面编程 .Net的服务端应用AOP很常见,在Asp.net MVC与Asp.net WebApi等新框架里到处都有AOP的影子,我们可以把一个服务方法“切”为很多面,日志面.验证面.请 ...

  7. 通过取父级for循环的i来理解闭包,iife,匿名函数

    在使用for循环的时候,假如需要在循环体中添加一个匿名函数处理其他的事情,那么,在这个匿名函数内,如果需要用到对应的i,因为闭包的缘故,循环体循环结束后才返回i,所以i最终为最后一次++的数值.   ...

  8. 按条件生成j随机json包:randomjson

    前端开发中,在做前后端分离的时候,经常需要手写json数据,有2个问题特别揪心: 1,数据是写死的,不能按一定的条件随机生成长度不一,内容不一的数据 2,写数组的时候,如果有很多条,需要一条一条地写, ...

  9. codeforces 372E. Drawing Circles is Fun

    tags:[圆の反演][乘法原理][尺取法]题解:圆の反演:将过O点的圆,映射成不过O的直线,相切的圆反演出来的直线平行.我们将集合S中的点做反演变换:(x,y)->(x/(x^2+y^2), ...

  10. OOP的完美点缀—AOP之SpringAOP实现原理

    OOP的完美点缀-AOP之SpringAOP实现原理 前言 OOP与AOP OOP(Object Oriented Programming,面向对象编程),通过封装.继承将程序抽象为各个层次的对象,进 ...