前言

Nodejs基于Javascript,MongoDB脚步同样也是基于Javascript。而且他们的数据存储格式都是JSON,这就是为什么要把他们放在一起的原因了。如果程序前后端能直接处理JSON,我想数据处理过程又可以极大的减化了,代码量又将低少1/5。多么的兴奋啊!让我们来动手验证一下想法吧。
本文重点介绍web前端通过JQuery发起POST提交JSON数据,通过Mongoose直接插入或更新到MongoDB。
工程目录沿用nodejs-demo,增加/mongoose路径及对应文件。
文章目录
1. 配置Mongoose
增加mongoose的类库
cd d:/workspace/project/nodejs-demo npm install mongoose D:\workspace\project\nodejs-demo\node_modules\mongoose\node_modules\mongodb\node_modu C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.InvalidPlatform.Targe e_modules\mongodb\node_modules\bson\build\bson.vcxproj] mongoose@3.6.10 node_modules\mongoose ├── muri@0.3.1 ├── hooks@0.2.1 ├── sliced@0.0.3 ├── mpath@0.1.1 ├── ms@0.1.0 ├── mpromise@0.2.1 (sliced@0.0.4) └── mongodb@1.3.3 (kerberos@0.0.2, bson@0.1.8)
安装时,有64位兼容性错误提示没关系,Mongoose类库安装完成。
增加models目录
mkdir models
在models目录,增加mongodb.js文件
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/nodejs');
exports.mongoose = mongoose;
指定Mongo的数据库名为nodejs
2.创建目录及文件
在models目录,增加数据模型Movie.js
var mongodb = require('./mongodb');
var Schema = mongodb.mongoose.Schema;
var MovieSchema = new Schema({
name : String,
alias : [String],
publish : Date,
create_date : { type: Date, default: Date.now},
images :{
coverSmall:String,
coverBig:String,
},
source :[{
source:String,
link:String,
swfLink:String,
quality:String,
version:String,
lang:String,
subtitle:String,
create_date : { type: Date, default: Date.now }
}]
});
var Movie = mongodb.mongoose.model("Movie", MovieSchema);
var MovieDAO = function(){};
module.exports = new MovieDAO();
指定Mongo的数据库集为Movie
数据类型,包括了String,Date,Array,Mixed]
打开app.js增加访问路径
var express = require('express')
, routes = require('./routes')
, user = require('./routes/user')
, movie = require('./routes/movie')
, http = require('http')
, path = require('path')
, ejs = require('ejs')
, SessionStore = require("session-mongoose")(express);
...
app.get('/movie/add',movie.movieAdd);//增加
app.post('/movie/add',movie.doMovieAdd);//提交
app.get('/movie/:name',movie.movieAdd);//编辑查询
app.get('/movie/json/:name',movie.movieJSON);//JSON数据
在routes目录,增加movie.js
var Movie = require('./../models/Movie.js');
exports.movieAdd = function(req, res) {
if(req.params.name){//update
return res.render('movie', {
title:req.params.name+'|电影|管理|moive.me',
label:'编辑电影:'+req.params.name,
movie:req.params.name
});
} else {
return res.render('movie',{
title:'新增加|电影|管理|moive.me',
label:'新增加电影',
movie:false
});
}
};
exports.doMovieAdd = function(req, res) {
res.send({'success':true});
};
在views目录,增加movie.html
<% include header.html %> <div class="container-fluid"> <div class="row-fluid"> <div class="span8"> <form> <fieldset> <legend><%=label%></legend> <textarea id="c_editor" name="c_editor" class="span12" rows="10"></textarea> <button id="c_save" type="button" class="btn btn-primary">保存</button> </fieldset> <form> </div> </div> </div> <% include footer.html %>
网页效果:http://localhost:3000/movie/add
3. 插入数据,POST提交JSON增加一条记录
基础环境,都搭建好后,我们开台准备向mongodb中插入数据。
首先创建一个json数据文件,这样我们可以方便点,直接读入这个文件,创建JSON数据对象了。
在public/javascripts/目录,增加movie.json文件
{
"name": "未来警察",
"alias": ["Future X-Cops ","Mei loi ging chaat"],
"publish": "2010-04-29",
"images":{
"coverBig":"/img/movie/1_big.jpg",
"coverSmall":"/img/movie/1_small.jpg"
},
"source":[{
"source":"优酷",
"link":"http://www.youku.com",
"swfLink":"http://player.youku.com/player.php/sid/XMTY4NzM5ODc2/v.swf",
"quality":"高清",
"version":"正片",
"lang":"汉语",
"subtitle":"中文字幕"
},{
"source":"搜狐",
"link":"http://tv.sohu.com",
"swfLink":"http://share.vrs.sohu.com/75837/v.swf&topBar=1&autoplay=false&plid=3860&pub_catecode=",
"quality":"高清",
"version":"正片",
"lang":"汉语",
"subtitle":"中文字幕"
}]
}
在public/javascripts/目录,增加jquery.json-2.4.js类库
<script src="/javascripts/jquery-1.9.1.min.js"></script> <script src="/javascripts/bootstrap.min.js"></script> <script src="/javascripts/jquery.json-2.4.js"></script> <script src="/javascripts/movie.js"></script> </body> </html>
在public/javascripts/目录,增加movie.js文件,作为前端脚本
$(function() {
var mdata={};
var url = '/javascripts/movie.json';
$.getJSON(url, function(data) {
mdata=data;
render_editor_form(mdata);
render_event_form(mdata);
});
var render_editor_form=function(data){
$('#c_editor').val($.toJSON(data));
};
var render_event_form=function(){
$('#c_save').on('click',function(event){
var data = {};
data['content'] = mdata;
$.ajax({
type: "POST",
url: '/movie/add',
data: data,
success: function (data, textStatus){
if(data.success){
$('#msg').html('成功保存!');
$('#msg').addClass('alert alert-success');
$(location).attr('href','/movie/'+mdata.name);
} else {
$('#msg').html(data.err);
$('#msg').addClass('alert alert-error');
}
}
});
});
};
});
修改views/footer.html,增加movie.js文件引用,同时增加jquery.json包
<script src="/javascripts/jquery-1.9.1.min.js"></script> <script src="/javascripts/bootstrap.min.js"></script> <script src="/javascripts/jquery.json-2.4.js"></script> <script src="/javascripts/movie.js"></script> </body> </html>
网页效果:http://localhost:3000/movie/add
在models/Movie.js,增加save方法
MovieDAO.prototype.save = function(obj, callback) {
var instance = new Movie(obj);
instance.save(function(err){
callback(err);
});
};
在routes/movie.js,调用save方法
exports.doMovieAdd = function(req, res) {
console.log(req.body.content);
var json = req.body.content;
if(json._id){//update
} else {//insert
Movie.save(json, function(err){
if(err) {
res.send({'success':false,'err':err});
} else {
res.send({'success':true});
}
});
}
};
控制台日志
Express server listening on port 3000
{ name: '未来警察',
alias: [ 'Future X-Cops ', 'Mei loi ging chaat' ],
publish: '2010-04-29',
images:
{ coverBig: '/img/movie/1_big.jpg',
coverSmall: '/img/movie/1_small.jpg' },
source:
[ { source: '优酷',
link: 'http://www.youku.com',
swfLink: 'http://player.youku.com/player.php/sid/XMTY4NzM5ODc2/v.swf',
quality: '高清',
version: '正片',
lang: '汉语',
subtitle: '中文字幕' },
{ source: '搜狐',
link: 'http://tv.sohu.com',
swfLink: 'http://share.vrs.sohu.com/75837/v.swf&topBar=1&autoplay=false&plid=3860&pub_ca
quality: '高清',
version: '正片',
lang: '汉语',
subtitle: '中文字幕' } ] }
POST /movie/add 200 57ms - 21b
数据已插入MongoDB
4. 查询数据,取出刚增加的记录
models/Movie.js,增加findByName方法
MovieDAO.prototype.findByName = function(name, callback) {
Movie.findOne({name:name}, function(err, obj){
callback(err, obj);
});
};
routes/movies.js,增加movieJSON
exports.movieJSON = function(req, res) {
Movie.findByName(req.params.name,function(err, obj){
res.send(obj);
});
}
前端javascripts/movie.js,从/movie/json/xxx处取数据
var mdata={};
var url = '/javascripts/movie.json';
var movie=$('#c_editor').attr('movie')
if(movie){
url = '/movie/json/'+movie;
}
修改 views/movie.html
<textarea id="c_editor" name="c_editor" rows="10" <%= (movie?'"movie='+movie+'"':'') %>></textarea>
访问我们的网页
http://localhost:3000/movie/未来警察
数据从/movie/json/未来警察,处读取。完成尝试。
修改操作与插入的操作类似,我就不做演示了。
以上程序代码,大家可自行下载学习。
github地址:https://github.com/bsspirit/nodejs-demo
本地下载:http://xiazai./201705/yuanma/nodejs-demo().rar
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# mongoose
# mongodb
# mongodb存储json数据
# 保存json数据
# egg.js的基本使用和调用数据库的方法示例
# 关于自定义Egg.js的请求级别日志详解
# KOA+egg.js集成kafka消息队列的示例
# mongoose更新对象的两种方法示例比较
# 关于在mongoose中填充外键的方法详解
# 详解Nodejs基于mongoose模块的增删改查的操作
# 关于mongoose连接mongodb重复访问报错的解决办法
# Mongoose 在egg中的使用详解
# 中文字幕
# 未来
# 类库
# 搜狐
# 都是
# 他们的
# 我想
# 我就
# 本地下载
# 让我们
# 这就是
# 要把
# 我们可以
# 数据处理
# 不做
# 这篇文章
# 谢谢大家
# 又将
# 创建一个
# 又可
相关文章:
网站图片在线制作软件,怎么在图片上做链接?
行程制作网站有哪些,第三方机票电子行程单怎么开?
定制建站策划方案_专业建站与网站建设方案一站式指南
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
建站之星收费标准详解:套餐费用及年费价格表一览
如何选择PHP开源工具快速搭建网站?
如何快速生成橙子建站落地页链接?
学校为何禁止电信移动建设网站?
如何快速搭建高效香港服务器网站?
如何快速使用云服务器搭建个人网站?
成都响应式网站开发,dw怎么把手机适应页面变成网页?
建站ABC备案流程中有哪些关键注意事项?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
微课制作网站有哪些,微课网怎么进?
Android自定义listview布局实现上拉加载下拉刷新功能
专业公司网站制作公司,用什么语言做企业网站比较好?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
贸易公司网站制作流程,出口贸易网站设计怎么做?
建站之星安装后如何配置SEO及设计样式?
如何通过FTP空间快速搭建安全高效网站?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
建站上市公司网站建设方案与SEO优化服务定制指南
高端企业智能建站程序:SEO优化与响应式模板定制开发
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
定制建站是什么?如何实现个性化需求?
如何通过远程VPS快速搭建个人网站?
如何用花生壳三步快速搭建专属网站?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
简历在线制作网站免费版,如何创建个人简历?
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
如何在万网开始建站?分步指南解析
如何选择香港主机高效搭建外贸独立站?
如何通过NAT技术实现内网高效建站?
b2c电商网站制作流程,b2c水平综合的电商平台?
如何在香港服务器上快速搭建免备案网站?
c# 服务器GC和工作站GC的区别和设置
表情包在线制作网站免费,表情包怎么弄?
广州营销型建站服务商推荐:技术优势与SEO优化解析
如何用西部建站助手快速创建专业网站?
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
常州企业网站制作公司,全国继续教育网怎么登录?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
临沂网站制作企业,临沂第三中学官方网站?
网站制作价目表怎么做,珍爱网婚介费用多少?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
javascript中的try catch异常捕获机制用法分析
如何在阿里云部署织梦网站?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
*请认真填写需求信息,我们会在24小时内与您取得联系。