亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

利用Mongoose讓JSON數據直接插入或更新到MongoDB

2019-11-19 16:40:33
字體:
來源:轉載
供稿:網友

前言

Nodejs基于Javascript,MongoDB腳步同樣也是基于Javascript。而且他們的數據存儲格式都是JSON,這就是為什么要把他們放在一起的原因了。如果程序前后端能直接處理JSON,我想數據處理過程又可以極大的減化了,代碼量又將低少1/5。多么的興奮啊!讓我們來動手驗證一下想法吧。

本文重點介紹web前端通過JQuery發起POST提交JSON數據,通過Mongoose直接插入或更新到MongoDB。

工程目錄沿用nodejs-demo,增加/mongoose路徑及對應文件。

文章目錄

  • 配置Mongoose
  • 創建目錄及文件
  • 插入數據,POST提交JSON增加一條記錄
  • 查詢數據,取出剛增加的記錄

1. 配置Mongoose

增加mongoose的類庫

cd d:/workspace/project/nodejs-demonpm install mongooseD:/workspace/project/nodejs-demo/node_modules/mongoose/node_modules/mongodb/node_moduC:/Program Files (x86)/MSBuild/Microsoft.Cpp/v4.0/Microsoft.Cpp.InvalidPlatform.Targee_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){//updatereturn 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 {//insertMovie.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_caquality: '高清',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.VeVB.COm/201705/yuanma/nodejs-demo(VeVB.COm).rar

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产成人精品久久久国产成人一区| 亚洲日韩中文字幕| 91情侣偷在线精品国产| 中文字幕亚洲无线码a| 欧美日韩黄色大片| 成人中心免费视频| 色爱av美腿丝袜综合粉嫩av| 久久天天躁夜夜躁狠狠躁2022| 正在播放国产一区| 国产精品免费一区| 中国日韩欧美久久久久久久久| 亚洲一区二区久久久久久| 人人爽久久涩噜噜噜网站| 综合136福利视频在线| 色偷偷88888欧美精品久久久| 日韩av在线精品| 日韩中文在线不卡| 亚洲精品第一页| 欧美亚洲另类在线| 成人h猎奇视频网站| 色yeye香蕉凹凸一区二区av| 国产精品91在线| 久久综合久久八八| 91精品国产高清久久久久久91| 欧美激情精品久久久| 日韩成人中文电影| 亚洲电影在线观看| 成人国产精品日本在线| 欧美日韩亚洲成人| 在线播放国产一区二区三区| 欧美电影电视剧在线观看| 国产成人精品一区| 成人免费自拍视频| 亚洲摸下面视频| 久久久久www| 欧美成人全部免费| 91免费看片网站| 91av在线免费观看视频| 日本精品va在线观看| 亚洲精品美女久久| 亚洲欧美另类人妖| 91国内在线视频| 色午夜这里只有精品| 色综合伊人色综合网| 欧洲亚洲女同hd| 日韩亚洲一区二区| 亚洲成av人影院在线观看| 国产亚洲欧美一区| 成人午夜小视频| 欧美孕妇与黑人孕交| 美日韩精品免费观看视频| 色综合久久精品亚洲国产| 亚洲精品91美女久久久久久久| 欧美久久久精品| 亚洲人成五月天| 91精品在线观| 在线精品91av| 欧美华人在线视频| 中国人与牲禽动交精品| 欧美一区二区.| 一区二区三区国产视频| 一区二区三区 在线观看视| 日韩免费高清在线观看| 黑人精品xxx一区| 国产精品久久久久秋霞鲁丝| 久久亚洲电影天堂| 亚洲一区二区三区在线视频| 欧美亚洲伦理www| 国产日韩av在线播放| 国产视频亚洲视频| 成人国产精品久久久| 九九热精品视频在线播放| 午夜精品视频网站| 欧美日韩一区二区在线播放| 国产美女久久精品| 午夜精品久久久久久久久久久久久| 亚洲国产精品久久久久久| 成人亚洲欧美一区二区三区| 在线播放亚洲激情| 97免费中文视频在线观看| 欧美激情综合色| 国模视频一区二区三区| 精品国产欧美成人夜夜嗨| 精品久久久av| 亚洲在线视频观看| 日韩av一区在线| 欧美精品一本久久男人的天堂| 黑人巨大精品欧美一区二区免费| 亚洲理论电影网| www.99久久热国产日韩欧美.com| 久久视频这里只有精品| 国产精品影片在线观看| 国产999在线观看| 国产成人福利夜色影视| 亚洲自拍偷拍色图| 91高清视频免费| 国产精品久久久久久婷婷天堂| 中文字幕亚洲欧美日韩在线不卡| 欧美午夜激情在线| 国产精品91在线| 欧美激情一级精品国产| 精品久久久久久中文字幕| 久久av.com| 综合国产在线观看| 亚洲新声在线观看| 午夜精品久久久久久久99热浪潮| 狠狠综合久久av一区二区小说| 久久999免费视频| 久久久精品在线观看| 亚洲国产一区二区三区四区| 欧美电影免费观看电视剧大全| 国产精品草莓在线免费观看| zzijzzij亚洲日本成熟少妇| 日韩人体视频一二区| 欧美日韩中文在线| 国产亚洲激情视频在线| 亚洲肉体裸体xxxx137| 欧美激情视频一区二区| 国内精品久久久久影院优| 精品久久久久久久久久国产| 欧美国产一区二区三区| 亚洲激情视频在线观看| 欧美福利视频在线观看| 亚洲精品小视频在线观看| 亚洲国产精品人久久电影| 亚洲亚裔videos黑人hd| 亚洲美女av在线播放| 亚洲视频999| 欧美日韩福利视频| 日韩69视频在线观看| 久久久久久久999精品视频| 亚洲香蕉av在线一区二区三区| 在线视频国产日韩| 亚洲第一精品福利| 国产美女高潮久久白浆| 成人午夜在线影院| 久久精品成人欧美大片| 欧美日本中文字幕| 色狠狠av一区二区三区香蕉蜜桃| 一区二区三区无码高清视频| 亚洲白虎美女被爆操| 久久久亚洲精品视频| 91在线精品播放| 中文字幕v亚洲ⅴv天堂| 国产亚洲欧美另类中文| 国产精品91在线| 8x海外华人永久免费日韩内陆视频| 亚洲iv一区二区三区| 91亚洲精品一区| 国产一区二区三区三区在线观看| 久久69精品久久久久久国产越南| 97精品欧美一区二区三区| 亚洲精品日韩久久久| 国产精品极品美女在线观看免费| 欧美亚洲成人免费| 精品久久久久久久久国产字幕| 青青草原一区二区| 狠狠躁夜夜躁久久躁别揉| 亚州欧美日韩中文视频| 日韩av中文字幕在线| 777国产偷窥盗摄精品视频| 欧美激情精品久久久久久| 日韩高清不卡av| 超在线视频97|