前言
創(chuàng)新互聯(lián)公司2013年開(kāi)創(chuàng)至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元貴溪做網(wǎng)站,已為上家服務(wù),為貴溪各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792
Nodejs基于Javascript,MongoDB腳步同樣也是基于Javascript。而且他們的數(shù)據(jù)存儲(chǔ)格式都是JSON,這就是為什么要把他們放在一起的原因了。如果程序前后端能直接處理JSON,我想數(shù)據(jù)處理過(guò)程又可以極大的減化了,代碼量又將低少1/5。多么的興奮?。∽屛覀儊?lái)動(dòng)手驗(yàn)證一下想法吧。
本文重點(diǎn)介紹web前端通過(guò)JQuery發(fā)起POST提交JSON數(shù)據(jù),通過(guò)Mongoose直接插入或更新到MongoDB。
工程目錄沿用nodejs-demo,增加/mongoose路徑及對(duì)應(yīng)文件。
文章目錄
1. 配置Mongoose
增加mongoose的類庫(kù)
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)
安裝時(shí),有64位兼容性錯(cuò)誤提示沒(méi)關(guān)系,Mongoose類庫(kù)安裝完成。
增加models目錄
mkdir models
在models目錄,增加mongodb.js文件
var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/nodejs'); exports.mongoose = mongoose;
指定Mongo的數(shù)據(jù)庫(kù)名為nodejs
2.創(chuàng)建目錄及文件
在models目錄,增加數(shù)據(jù)模型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的數(shù)據(jù)庫(kù)集為Movie
數(shù)據(jù)類型,包括了String,Date,Array,Mixed]
打開(kāi)app.js增加訪問(wèn)路徑
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數(shù)據(jù)
在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 %><% include footer.html %>
網(wǎng)頁(yè)效果:http://localhost:3000/movie/add
3. 插入數(shù)據(jù),POST提交JSON增加一條記錄
基礎(chǔ)環(huán)境,都搭建好后,我們開(kāi)臺(tái)準(zhǔn)備向mongodb中插入數(shù)據(jù)。
首先創(chuàng)建一個(gè)json數(shù)據(jù)文件,這樣我們可以方便點(diǎn),直接讀入這個(gè)文件,創(chuàng)建JSON數(shù)據(jù)對(duì)象了。
在public/javascripts/目錄,增加movie.json文件
{ "name": "未來(lái)警察", "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":"優(yōu)酷", "link":"http://www.youku.com", "swfLink":"http://player.youku.com/player.php/sid/XMTY4NzM5ODc2/v.swf", "quality":"高清", "version":"正片", "lang":"漢語(yǔ)", "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":"漢語(yǔ)", "subtitle":"中文字幕" }] }
在public/javascripts/目錄,增加jquery.json-2.4.js類庫(kù)