摘要:使用內(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
摘要:使用內(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...
摘要:前言由于最近公司需要做一個(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)...
摘要:前言由于最近公司需要做一個(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)...
摘要:本人前端萌新大概花了一周多一點(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。 技...
摘要:利用中間件實(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)單,有的...
閱讀 3243·2021-11-23 09:51
閱讀 2498·2021-09-27 13:34
閱讀 2482·2021-09-08 09:45
閱讀 679·2019-08-30 15:44
閱讀 3507·2019-08-29 12:17
閱讀 2771·2019-08-26 12:18
閱讀 2637·2019-08-26 10:10
閱讀 3090·2019-08-23 18:02