成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

初嘗node.js + Express + MongoDB + Vue.js 項(xiàng)目構(gòu)建(2)

zhisheng / 2727人閱讀

摘要:使用內(nèi)在模塊發(fā)送響應(yīng)數(shù)據(jù)監(jiān)聽(tīng)端口終端打印如下信息使用框架本項(xiàng)目使用的框架來(lái)起服務(wù)器。數(shù)據(jù)庫(kù)中文檔每一行的數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)和基本一樣,所有存儲(chǔ)在集合中的數(shù)據(jù)都是格式,是一種類的一種二進(jìn)制形式的存儲(chǔ)格式,簡(jiǎn)稱。

前言

經(jīng)過(guò)上一篇經(jīng)濟(jì)基礎(chǔ)構(gòu)建的完成,那么現(xiàn)在正式開(kāi)始碼代碼吧!

項(xiàng)目架構(gòu)

起HTTP服務(wù)

首先建立/server/app.js文件,先把起服務(wù)所需的模塊引入進(jìn)來(lái),以下介紹兩種起HTTP服務(wù)的方法。

1.使用Node.js 內(nèi)在模塊http

var http = require("http");
http.createServer(function (request, response) {
    // 發(fā)送響應(yīng)數(shù)據(jù) "Hello Node.js"
    response.end("Hello Node.js");
}).listen(8888); // 監(jiān)聽(tīng)8888端口
// 終端打印如下信息
console.log("Server running at http://127.0.0.1:8888/");

2.使用express框架
本項(xiàng)目使用node.js的express框架來(lái)起HTTP服務(wù)器。express官網(wǎng),內(nèi)有對(duì)應(yīng)的簡(jiǎn)單教程、API等,可自行查閱

    const express = require("express"), //加載express模塊
          app = express(); //啟動(dòng)一個(gè)web服務(wù)器
    
    app.get("/",function(req,res){
        res.send("Hello Node.js");
    })
    
    const server = app.listen(3000,function(){
        let port = server.address().port;
        console.log("app listening at http://%s:%s","localhost",port);
    });

保存后,命令行進(jìn)入app.js文件所在文件夾,運(yùn)行命令node app.js,然后瀏覽器訪問(wèn)http://localhost:3000,即會(huì)查看到返回"Hello Node.js"。

MongoDB可視化工具Robomongo

為了測(cè)試方便,我們首先要往我們本地的MongoDB數(shù)據(jù)庫(kù)中插入一些數(shù)據(jù)。為了方便使用,MongoDB也有類似mysql navicat的圖形化管理工具Robomongo 1.0.0,下載地址:https://robomongo.org/download,下載安裝即可。

1.打開(kāi)Robomongo,點(diǎn)擊左上角file->connect(快捷鍵ctrl+N),在彈出來(lái)的框中點(diǎn)擊create來(lái)創(chuàng)建連接。

2.輸入連接名字,以及地址名,端口默認(rèn)為27017,地址address和端口一般不用更改。

這樣test為名字的MongoDB連接就創(chuàng)建了。

3.MongoDB 是由C++語(yǔ)言編寫(xiě)的,是一個(gè)基于分布式文件存儲(chǔ)的開(kāi)源數(shù)據(jù)庫(kù)系統(tǒng)。MongoDB和平常使用的MySQL是有比較大的區(qū)別的:

4.我們首先點(diǎn)擊左側(cè)剛剛創(chuàng)建的test連接,鼠標(biāo)右鍵單擊 create database,輸入是數(shù)據(jù)庫(kù)名testDb點(diǎn)擊create創(chuàng)建即可。

5.鼠標(biāo)左鍵單擊剛剛創(chuàng)建的testDb數(shù)據(jù)庫(kù),創(chuàng)建collection(即為平常使用的數(shù)據(jù)庫(kù)中所說(shuō)的table表),點(diǎn)擊create即可創(chuàng)建user 集合成功。

6.下面我們開(kāi)始往user collection集合中插入數(shù)據(jù):鼠標(biāo)右鍵單擊user collection -> insert documet(插入文檔,即我們平常使用的sql數(shù)據(jù)庫(kù)中的行)。

7.MongoDB數(shù)據(jù)庫(kù)中文檔(每一行的數(shù)據(jù))的數(shù)據(jù)結(jié)構(gòu)和JSON基本一樣,所有存儲(chǔ)在集合中的數(shù)據(jù)都是BSON格式,BSON是一種類JSON的一種二進(jìn)制形式的存儲(chǔ)格式,簡(jiǎn)稱Binary JSON。因此,我們?cè)诓迦霐?shù)據(jù)時(shí),只要像JSON格式那樣輸入我們想要插入的數(shù)據(jù)。點(diǎn)擊save保存即可成功插入數(shù)據(jù)。

{
    userName:"dodo",
    sex:18,
    sex:"女",
    job:"font-end Engineer"
}

8.雙擊user collection即可看到我們剛剛插入的那條數(shù)據(jù),MongoDB的主鍵自動(dòng)將_id字段設(shè)置為主鍵。

開(kāi)始連接數(shù)據(jù)庫(kù)

1.使用MongoDB原生自帶的API來(lái)創(chuàng)建連接,直接在/server/app.js輸入以下代碼

var MongoClient = require("mongodb").MongoClient,
    DB_CONN_STR = "mongodb://localhost:27017/testDb"; # 數(shù)據(jù)庫(kù)為 testDb
var selectData = function(db, callback) {  
  //連接到user表  
  var collection = db.collection("user");
  //查詢數(shù)據(jù)
  var whereStr = {"userName":"dodo"};
  collection.find(whereStr).toArray(function(err, result) {
    if(err)
    {
      console.log("Error:"+ err);
      return;
    }     
    callback(result);
  });
}
 
MongoClient.connect(DB_CONN_STR, function(err, db) {
  console.log("連接成功!");
  selectData(db, function(result) {
    console.log(result);
    db.close();
  });
});

2.本項(xiàng)目使用Mongoose來(lái)配合MongoDB操作數(shù)據(jù)庫(kù)
mongoose是mongoDB的一個(gè)對(duì)象模型工具,是基于node-mongodb-native開(kāi)發(fā)的mongoDB的nodejs驅(qū)動(dòng),可以在異步的環(huán)境下執(zhí)行。同時(shí)它也是針對(duì)mongoDB操作的一個(gè)對(duì)象模型庫(kù),封裝了mongoDB對(duì)文檔的一些增刪改查等常用方法,讓nodejs操作mongoDB數(shù)據(jù)庫(kù)變得更加容易。

// 加載所需要的模塊
const mongoose = require("mongoose");
mongoose.Promise = require("bluebird");
const Schema = mongoose.Schema;

const UserSchema = new mongoose.Schema({
    username: String,//用戶名
    sex: String,// 性別
    age: Number, // 年齡
},{collection:"user"}) 
// 注意這里一定要帶有collection,否則mongoose會(huì)在下面model時(shí)對(duì)user添加后綴s.

const Models = {
    User : mongoose.model("user", UserSchema)
};

/**
 * 創(chuàng)建數(shù)據(jù)庫(kù)名稱并連接
 * Connecting to Mongod instance.
 */
const dbHost = "mongodb://localhost/testDb";
mongoose.connect(dbHost);
const db = mongoose.connection;
db.on("error", function () {
    console.log("Database connection error.");
});
db.once("open", function () {
    console.log("The Database has connected.")
});

module.exports = Models;

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/19005.html

相關(guān)文章

  • 初嘗node.js + Express + MongoDB + Vue.js 項(xiàng)目構(gòu)建(2)

    摘要:使用內(nèi)在模塊發(fā)送響應(yīng)數(shù)據(jù)監(jiān)聽(tīng)端口終端打印如下信息使用框架本項(xiàng)目使用的框架來(lái)起服務(wù)器。數(shù)據(jù)庫(kù)中文檔每一行的數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)和基本一樣,所有存儲(chǔ)在集合中的數(shù)據(jù)都是格式,是一種類的一種二進(jìn)制形式的存儲(chǔ)格式,簡(jiǎn)稱。 前言 經(jīng)過(guò)上一篇經(jīng)濟(jì)基礎(chǔ)構(gòu)建的完成,那么現(xiàn)在正式開(kāi)始碼代碼吧! 項(xiàng)目架構(gòu) showImg(https://segmentfault.com/img/bVNkQM?w=322&h=58...

    kevin 評(píng)論0 收藏0
  • 初嘗node.js + Express + MongoDB 項(xiàng)目構(gòu)建(1)

    摘要:前言由于最近公司需要做一個(gè)聊天監(jiān)控的項(xiàng)目,老大讓我把后臺(tái)也做了,于是才真正實(shí)踐深入的內(nèi)部。幾番折騰終于把項(xiàng)目搭起來(lái)了。發(fā)生服務(wù)特定錯(cuò)誤,則前去目錄下的和文件刪掉,以管理員身份運(yùn)行命令行然后重新啟動(dòng)服務(wù)即可。 前言 由于最近公司需要做一個(gè)聊天監(jiān)控的項(xiàng)目,老大讓我把后臺(tái)也做了,于是才真正實(shí)踐深入node.js的內(nèi)部。幾番折騰終于把項(xiàng)目搭起來(lái)了。 經(jīng)濟(jì)基礎(chǔ) node.js (安裝配置傳送門(mén)...

    wangzy2019 評(píng)論0 收藏0
  • 初嘗node.js + Express + MongoDB 項(xiàng)目構(gòu)建(1)

    摘要:前言由于最近公司需要做一個(gè)聊天監(jiān)控的項(xiàng)目,老大讓我把后臺(tái)也做了,于是才真正實(shí)踐深入的內(nèi)部。幾番折騰終于把項(xiàng)目搭起來(lái)了。發(fā)生服務(wù)特定錯(cuò)誤,則前去目錄下的和文件刪掉,以管理員身份運(yùn)行命令行然后重新啟動(dòng)服務(wù)即可。 前言 由于最近公司需要做一個(gè)聊天監(jiān)控的項(xiàng)目,老大讓我把后臺(tái)也做了,于是才真正實(shí)踐深入node.js的內(nèi)部。幾番折騰終于把項(xiàng)目搭起來(lái)了。 經(jīng)濟(jì)基礎(chǔ) node.js (安裝配置傳送門(mén)...

    toddmark 評(píng)論0 收藏0
  • 初入Vue,node,expressmongodb

    摘要:本人前端萌新大概花了一周多一點(diǎn),完成了一個(gè)前后端分離解耦的簡(jiǎn)易個(gè)人博客項(xiàng)目。項(xiàng)目前后端分離,路由完全交給處理,后端只負(fù)責(zé)操作數(shù)據(jù)庫(kù),暴露。目前項(xiàng)目提供做學(xué)習(xí)用途,希望能給大家一些幫助,對(duì)全棧項(xiàng)目有一個(gè)初步的了解,謝謝。 本人前端萌新大概花了一周多一點(diǎn),完成了一個(gè)前后端分離解耦的簡(jiǎn)易個(gè)人博客項(xiàng)目。項(xiàng)目前后端分離,路由完全交給vue-router處理,后端只負(fù)責(zé)操作數(shù)據(jù)庫(kù),暴露api。 技...

    dingding199389 評(píng)論0 收藏0
  • 一些基于React、Vue、Node.jsMongoDB技術(shù)棧的實(shí)踐項(xiàng)目

    摘要:利用中間件實(shí)現(xiàn)異步請(qǐng)求,實(shí)現(xiàn)兩個(gè)用戶角色實(shí)時(shí)通信。目前還未深入了解的一些概念。往后會(huì)寫(xiě)更多的前后臺(tái)聯(lián)通的項(xiàng)目。刪除分組會(huì)連同組內(nèi)的所有圖片一起刪除。算是對(duì)自己上次用寫(xiě)后臺(tái)的一個(gè)強(qiáng)化,項(xiàng)目文章在這里。后來(lái)一直沒(méi)動(dòng),前些日子才把后續(xù)的完善。 歡迎訪問(wèn)我的個(gè)人網(wǎng)站:http://www.neroht.com/? 剛學(xué)vue和react時(shí),利用業(yè)余時(shí)間寫(xiě)的關(guān)于這兩個(gè)框架的訓(xùn)練,都相對(duì)簡(jiǎn)單,有的...

    tangr206 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<