摘要:前言要做一個(gè)全沾的工程師,對(duì)于后端和數(shù)據(jù)庫(kù)來(lái)說(shuō),即使不認(rèn)識(shí)也要見(jiàn)個(gè)面的。基本了解的概念就好,主要是安裝上數(shù)據(jù)庫(kù),并進(jìn)行簡(jiǎn)單的增刪操作。
前言:要做一個(gè)全沾的工程師,對(duì)于后端和數(shù)據(jù)庫(kù)來(lái)說(shuō),即使不認(rèn)識(shí)也要見(jiàn)個(gè)面的。本文給的例子很簡(jiǎn)單,也貼出來(lái)源碼,只要一步步下來(lái),就可以跑起來(lái)啦~~~
思考一個(gè)需求:做一個(gè)登錄頁(yè)面,自己搭建服務(wù)和數(shù)據(jù)庫(kù),將用戶輸入的登錄信息保存到數(shù)據(jù)庫(kù)
如何完成呢:首先選擇一個(gè)應(yīng)用框架,無(wú)論是 express、koa、egg 都可以;然后是數(shù)據(jù)庫(kù)選擇,MySQL、MongoDB 都可以,Node.js 都支持連接;最后是插件和中間件的選擇,將應(yīng)用于數(shù)據(jù)庫(kù)連接起來(lái)... 這是大致的思路,那本文以 express+MongoDB 為例建一個(gè)簡(jiǎn)單的程序,完成提出的需求。
數(shù)據(jù)庫(kù)準(zhǔn)備:MongoDB與可視化工具adminMongo的安裝、啟動(dòng)與連接
數(shù)據(jù)庫(kù)選擇 MongoDB 是因?yàn)槠浣Y(jié)構(gòu)與 JSON 數(shù)據(jù)格式很像?;玖私?MongoDB 的概念就好,主要是安裝上數(shù)據(jù)庫(kù),并進(jìn)行簡(jiǎn)單的增刪操作。SQL 與 MongoDB
更多學(xué)習(xí):http://www.runoob.com/mongodb/
安裝并運(yùn)行更詳細(xì)的過(guò)程參考:MongoDB與可視化工具adminMongo的安裝、啟動(dòng)與連接
下載:MongoDB網(wǎng)址 https://www.mongodb.com/downl...
配置:進(jìn)入解壓后的目錄,為MongoDB添加默認(rèn)的/data/db數(shù)據(jù)庫(kù)存儲(chǔ)目錄 $ mkdir data/db
啟動(dòng):進(jìn)入bin目錄下,啟動(dòng) mongodb 數(shù)據(jù)庫(kù)服務(wù)器 $ sudo ./mongod
訪問(wèn):再通過(guò)localhost訪問(wèn)本地?cái)?shù)據(jù)庫(kù)$ ./mongo
一些常用的命令:
數(shù)據(jù)庫(kù):show dbs ;use mytest ; db.dropDatabase()
集合:show collections ; db.createCollection("mycollection") ; db.mycollection.drop()
文檔:db.mycollection.find() ; db.mycollection.insert({name:"xxx"}) ; db.mycollection.remove({"name":"xxx"})
選擇一款可視化工具,能讓你的數(shù)據(jù)庫(kù)變得清晰,也可以選擇其他的工具,這里安裝的是adminMongo
下載adminMongo
$ git clone https://github.com/mrvautin/adminMongo
安裝并啟動(dòng):
$ cd adminMongo $ npm install $ npm start
連接本地?cái)?shù)據(jù)庫(kù):mongodb://127.0.0.1:27017
三、mongoose 數(shù)據(jù)模型直接用 node.js 也可以連接數(shù)據(jù)庫(kù)進(jìn)行讀寫,但很多插件除了封裝這個(gè)基本功能之外,還提供了很多其他的服務(wù)。對(duì)于 MongoDB,我不會(huì)使用原生 node 去操作,而是選了 mongoose 這個(gè)插件。mongoose 官網(wǎng): https://mongoosedoc.top/
安裝了 node.js 建一個(gè) test 項(xiàng)目文件夾,初始化 package.json
$ npm init
安裝 mongoose
$ npm install mongoose --save-dev
新建一個(gè)js文件,用來(lái)寫 mongoose 代碼
$ touch mongoose.js
連接數(shù)據(jù)庫(kù)
/* mongoose.js :建立數(shù)據(jù)庫(kù)連接 */ var mongoose = require("mongoose") // 引入 mongoose var url = "mongodb://localhost:27017/mytest"; // 本地?cái)?shù)據(jù)庫(kù)地址 mongoose.connect(url) // connect() 返回一個(gè)狀態(tài)待定(pending)的連接,可以用來(lái)判斷連接成功或失敗 var db = mongoose.connection; db.on("error", console.error.bind(console, "connection error:")); db.once("open", function() { console.log("Successful connection to "+url) });
運(yùn)行$ node mongoose.js 后輸出:
Successful connection to mongodb://localhost:27017/mytest
此時(shí)連接數(shù)據(jù)庫(kù)成功,建立 Schema(Mongoose 定義的相當(dāng)于 collection 集合的概念) ,寫數(shù)據(jù)
/* mongoose.js :建立數(shù)據(jù)庫(kù)連接用 mongoose.Schema 插入數(shù)據(jù) */ var Schema = mongoose.Schema //schema 都會(huì)映射到一個(gè) MongoDB collection let user = { name:String } var userSchema = Schema(user) var User = mongoose.model("User", userSchema); //將schema編譯為model構(gòu)造函數(shù) var newUser = new User({name: "yyyyyyyyyyyy"})// Mongoose 會(huì)自動(dòng)找到名稱是 model 名字復(fù)數(shù)形式的 collection newUser.save()
運(yùn)行$ node mongoose.js 后,可以通過(guò) adminmongo 查看數(shù)據(jù)是否添加成功,也可以通過(guò) terminal 命令查看。
補(bǔ)充說(shuō)明:以下是 mongoose 的所有合法 SchemaTypes:
常見(jiàn)的 String , Number , Date , Buffer , Boolean , Array ,
Mixed: 一個(gè)啥都可以放的 SchemaType,雖然便利,但也會(huì)讓數(shù)據(jù)難以維護(hù),
ObjectId:指定類型為 ObjectId,即“主鍵”,
Decimal128:自定義的Type
mongoose 只是幫我們連接數(shù)據(jù)并進(jìn)行讀寫,還需要啟動(dòng)一個(gè)服務(wù)框架,這個(gè)框架封裝了 node 的 http 服務(wù)。
安裝 express
$ npm install express --save-dev
創(chuàng)建 express.js 應(yīng)用Demo,啟動(dòng)服務(wù)接口
/* express.js: 引入 express 模塊,設(shè)置路由 */ var express = require("express")() express.get("/",function (request, response) { // 路由 response.send("hello world!") // 傳送HTTP響應(yīng) }) express.listen(3000) //監(jiān)聽(tīng)3000端口,默認(rèn)localhost: 127.0.0.1 || 0.0.0.0
運(yùn)行$ node express.js 后打開(kāi)瀏覽器輸入 http://localhost:3000/
五、完成一個(gè)表單提交三四步驟完成后思路會(huì)清晰起來(lái),現(xiàn)在只需要建立一個(gè)表單,提交數(shù)據(jù)到 express 提供的接口,express 接收到請(qǐng)求后通過(guò) mongoose 訪問(wèn)數(shù)據(jù)庫(kù)。
express.js 導(dǎo)入 mongoose 模塊,
/* mongoose.js: 導(dǎo)出模塊 */ module.exports = {mongoose,User} /* express.js: 引入 mongoose */ var {mongoose, User} = require("./mongoose")
*支持ES6需要
$ npm install babel-core --save-dev
在express.js中創(chuàng)建一個(gè)請(qǐng)求數(shù)據(jù)的路由/接口
/* express.js: 使用 mongoose 建立接口,添加數(shù)據(jù)到 MongoDB */ express.get("/addUser",function (request, response) { let data = { name: request.query.myinput } console.log(data) var addUser = new User(data) addUser.save() response.send(JSON.stringify(data)) })
新建一個(gè)html,向 http://127.0.0.1:3000/addUser 發(fā)送 get 請(qǐng)求,提交數(shù)據(jù)。
運(yùn)行$ node express.js 打開(kāi) index.html 文件:
成功存儲(chǔ):
在 adminMongo 中查看:
問(wèn)題:html請(qǐng)求為什么帶url和端口? 如何將html也放在 http://127.0.0.1:3000/ 地址下進(jìn)行訪問(wèn)?
所有的應(yīng)用框架都需要使用引擎才能將視圖渲染輸出為HTML!express 官網(wǎng)上默認(rèn)模板引擎 jade,express 4+ 用 ejs,也可以自定義模板引擎進(jìn)行視圖渲染
安裝模板引擎 ejs
$ npm i ejs --save-dev
配置模板引擎,使用我們習(xí)慣的 html 類型的模板代替 ejs
/* express.js: 配置引擎 */ express.set("views", "./views"); // 添加視圖路徑 express.engine("html", require("ejs").renderFile); // 將EJS模板映射至".html"文件 express.set("view engine", "html"); // 設(shè)置視圖引擎
配置路由與渲染的模板
/* express.js: 配置引擎 */ express.get("/view", function (request, response) { response.render("test") })
新建 views 文件夾與 test.html
/* views/test.html */使用了模板引擎,可以直接看到我!
打開(kāi)瀏覽器訪問(wèn):http://127.0.0.1:3000/view
注意此時(shí)數(shù)據(jù)的提交路徑是 “/addUser” ,沒(méi)有地址和端口號(hào),數(shù)據(jù)也可以提交。
總結(jié)整體的目錄結(jié)構(gòu)如下:
整個(gè)流程下來(lái),可以直接復(fù)制代碼跑一下,但要知道每個(gè)步驟需要做什么,最重要的是思路,其他的都是工具。
加油哦~ 少年!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/19322.html
摘要:多一個(gè)技能多一條出路,祝你在自學(xué)道路上越走越好,掌握自己的核心技能,不只是優(yōu)秀,還要成為不可替代的人 NodeJs+Express+Mysql + Vuejs 項(xiàng)目實(shí)戰(zhàn) 最近準(zhǔn)備寫一系列文章,全面講述如何基于NodeJs + Express + Mysql + Vuejs 從零開(kāi)發(fā)前后端完全分離項(xiàng)目; 文筆及技術(shù)可能在某些方面欠佳,請(qǐng)您指正,共同學(xué)習(xí)進(jìn)步 前端:Vuejs全家桶 后端:...
摘要:連接數(shù)據(jù)庫(kù)如果不自己創(chuàng)建默認(rèn)數(shù)據(jù)庫(kù)會(huì)自動(dòng)生成地址跟第一步的地址對(duì)應(yīng)。現(xiàn)在回過(guò)頭來(lái)看里面的入口文件最后,我們?cè)跒g覽器輸入,就會(huì)跳到。到此為止,我們就完成了整個(gè)前后端各自開(kāi)發(fā)到正式部署的流程。 一個(gè)完整的網(wǎng)站服務(wù)架構(gòu)包括:1、web frame ---這里應(yīng)用express框架2、web server ---這里應(yīng)用nodejs3、Database ---這里應(yīng)用monggoDB4、...
閱讀 1074·2021-11-12 10:34
閱讀 999·2021-09-30 09:56
閱讀 676·2019-08-30 15:54
閱讀 2610·2019-08-30 11:14
閱讀 1476·2019-08-29 16:44
閱讀 3215·2019-08-29 16:35
閱讀 2500·2019-08-29 16:22
閱讀 2452·2019-08-29 15:39