最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Mongoose讓JSON數(shù)據(jù)直接插入或更新到MongoDB

 更新時間:2017年05月03日 09:34:33   作者:Conan  
這篇文章主要給大家介紹了利用Mongoose讓JSON數(shù)據(jù)直接插入或更新到MongoDB數(shù)據(jù)庫的相關(guān)資料,文中詳細介紹了配置Mongoose、創(chuàng)建目錄及文件、插入數(shù)據(jù),POST提交JSON增加一條記錄以及詢數(shù)據(jù),取出剛增加的記錄等內(nèi)容,需要的朋友可以參考下。

前言

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

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

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

文章目錄

  • 配置Mongoose
  • 創(chuàng)建目錄及文件
  • 插入數(shù)據(jù),POST提交JSON增加一條記錄
  • 查詢數(shù)據(jù),取出剛增加的記錄

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位兼容性錯誤提示沒關(guān)系,Mongoose類庫安裝完成。

增加models目錄

mkdir models

在models目錄,增加mongodb.js文件

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/nodejs');
exports.mongoose = mongoose;

指定Mongo的數(shù)據(jù)庫名為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ù)庫集為Movie

數(shù)據(jù)類型,包括了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數(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 %>
<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 %>

網(wǎng)頁效果:http://localhost:3000/movie/add

3. 插入數(shù)據(jù),POST提交JSON增加一條記錄

基礎(chǔ)環(huán)境,都搭建好后,我們開臺準(zhǔn)備向mongodb中插入數(shù)據(jù)。

首先創(chuàng)建一個json數(shù)據(jù)文件,這樣我們可以方便點,直接讀入這個文件,創(chuàng)建JSON數(shù)據(jù)對象了。

在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":"優(yōu)酷",
"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>

網(wǎng)頁效果: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,調(diào)用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: '優(yōu)酷',
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

數(shù)據(jù)已插入MongoDB

4. 查詢數(shù)據(jù),取出剛增加的記錄

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處取數(shù)據(jù)

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>

訪問我們的網(wǎng)頁

http://localhost:3000/movie/未來警察

數(shù)據(jù)從/movie/json/未來警察,處讀取。完成嘗試。

修改操作與插入的操作類似,我就不做演示了。

以上程序代碼,大家可自行下載學(xué)習(xí)。

github地址:https://github.com/bsspirit/nodejs-demo

本地下載:http://xiazai.jb51.net/201705/yuanma/nodejs-demo(jb51.net).rar

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • node pnpm修改默認(rèn)包的存儲路徑(操作方法)

    node pnpm修改默認(rèn)包的存儲路徑(操作方法)

    PNPM是一個新的包管理工具,也是NPM的另一個替代方案,與NPM不同,PNPM使用符號鏈接(symlink)而不是復(fù)制文件來安裝包,這篇文章主要介紹了node pnpm修改默認(rèn)包的存儲路徑,需要的朋友可以參考下
    2024-05-05
  • Node.js中console.log()輸出彩色字體的方法示例

    Node.js中console.log()輸出彩色字體的方法示例

    這篇文章主要給大家介紹了關(guān)于Node.js中console.log()輸出彩色字體的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Node.js具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • node使用request請求的方法

    node使用request請求的方法

    這篇文章主要介紹了node使用request請求的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • iOS + node.js使用Socket.IO框架進行實時通信示例

    iOS + node.js使用Socket.IO框架進行實時通信示例

    本篇文章主要介紹了iOS + node.js使用Socket.IO框架進行實時通信示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • Node+Express連接MySQL實現(xiàn)增刪改查功能

    Node+Express連接MySQL實現(xiàn)增刪改查功能

    這篇文章主要為大家詳細介紹了Node如何結(jié)合Express連接MySQL實現(xiàn)增刪改查功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-05-05
  • 一文詳解Node.contain?函數(shù)兼容處理

    一文詳解Node.contain?函數(shù)兼容處理

    這篇文章主要為大家介紹了Node.contain?函數(shù)兼容處理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • nodejs集成sqlite使用示例

    nodejs集成sqlite使用示例

    本篇文章主要介紹了nodejs集成sqlite使用示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Node.js 制作實時多人游戲框架

    Node.js 制作實時多人游戲框架

    這篇文章主要介紹了Node.js 制作實時多人游戲框架,需要的朋友可以參考下
    2015-01-01
  • 如何正確使用Nodejs 的 c++ module 鏈接到 OpenSSL

    如何正確使用Nodejs 的 c++ module 鏈接到 OpenSSL

    這篇文章主要介紹了如何正確使用Nodejs 的 c++ module 鏈接到 OpenSSL,需要的朋友可以參考下
    2014-08-08
  • Node.js進程管理之進程集群詳解

    Node.js進程管理之進程集群詳解

    這篇文章介紹了Node.js進程管理之進程集群,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07

最新評論

西吉县| 吉林省| 潮州市| 正阳县| 南岸区| 元谋县| 波密县| 麻城市| 安国市| 普格县| 紫云| 永城市| 沛县| 阆中市| 梨树县| 凤凰县| 古浪县| 永新县| 南召县| 新龙县| 秦安县| 娱乐| 阿拉善右旗| 偏关县| 贵溪市| 巴青县| 玉环县| 泗阳县| 长海县| 定兴县| 昭觉县| 息烽县| 遂昌县| 保德县| 永年县| 永定县| 方正县| 江孜县| 钟山县| 咸宁市| 油尖旺区|