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