摘要:一般如果不成功,可以試著看看端口號是否被占用等問題。如下數(shù)據(jù)庫地址用戶名密碼地址端口號數(shù)據(jù)庫連接數(shù)據(jù)庫實例化連接對象連接錯誤連接成功然后再去下創(chuàng)建創(chuàng)建在下創(chuàng)建創(chuàng)建,這個地方的對應(yīng)數(shù)據(jù)庫中的最后,我們回到路由的中,使用引入模型。
這篇文章記錄一下如何使用vue+node+mongoDB開發(fā)出一個登錄的小demo。從而打通前端到后端一整條技能樹。
文章會先從介紹后端創(chuàng)建API接口連接mongoDB數(shù)據(jù)庫,到前端用vue-cli創(chuàng)建頁面調(diào)用接口,最后用一個login的demo穿起來。
這篇文章首先介紹一下后端部分,連接mongoDB,創(chuàng)建數(shù)據(jù)接口等...
1、安裝MongoDB數(shù)據(jù)庫第一步從mongoDB的官網(wǎng)下載安裝包,完成之后安裝也比較容易,一路next,注意一下安裝路徑,應(yīng)該不會有太大問題。
然后是創(chuàng)建數(shù)據(jù)庫文件存放的位置與log存放的位置,在你安裝的mongoDB文件夾下創(chuàng)建data文件夾,然后在data下再創(chuàng)建db和log兩個文件夾,比如我的mongoDB直接安裝在了D盤,創(chuàng)建完之后就是多了下面兩個文件夾:
D:MongoDBdatadb
D:MongoDBdatalog
接下里試著啟動一下mongoDB服務(wù),打開cmd命令行,進(jìn)入mongoDB的bin目錄,輸入以下命令啟動服務(wù)mongod --dbpath D:MongoDBdatadb
在瀏覽器輸入http://localhost:27017 (27017是mongodb的端口號)查看,如不出意外,會看到如下的內(nèi)容,表示已經(jīng)成功啟動了mongoDB服務(wù)了。
一般如果不成功,可以試著看看端口號是否被占用等問題。
我們還是希望在本地windows“服務(wù)”中,有配置上mongodb 服務(wù)。需要在Mongodb新建配置文件mongo.config文件,在編輯器中打開該文件,
dbpath=D:MongoDBdatadb
logpath=D:MongoDBdatalogmongo.log
保存。
管理員方式運行cmd,跳轉(zhuǎn)到 D:MongoDBbin目錄下。
輸入:mongod --config "D:Mongodbmongo.config" --install --serviceName "MongoDB"
完成后,查看本地的服務(wù)。會多出個mongoDB的服務(wù),這樣我們就能設(shè)置開機自啟動等功能啦。
有了數(shù)據(jù)庫,自然而然就會想要一個像navcat那樣的可視化的數(shù)據(jù)庫工具,我這邊使用的是Robo 3T,安裝一下這個軟件,
2、創(chuàng)建express應(yīng)用我們使用express框架來搭建我們的后臺,首先要安裝node,安裝完成之后我們使用express的應(yīng)用生成器快速創(chuàng)建一個應(yīng)用的骨架
全局安裝express-generator
$ npm install express-generator -g 2、在當(dāng)前目錄下創(chuàng)建一個名為myapp的應(yīng)用, $ express myapp 完成之后正常打開,安裝依賴 $ cd myapp $ npm install 用npm start啟動應(yīng)用,在瀏覽器中輸入 http://localhost:3000/ ,正常情況下出現(xiàn)
表示express應(yīng)用正確創(chuàng)建,然后我們依此來進(jìn)行mongoDB的連接以及操作數(shù)據(jù)庫接口的創(chuàng)建。
3、mongoose操作數(shù)據(jù)庫我們使用mongoose來進(jìn)行數(shù)據(jù)庫的連接,首先安裝mongoose
npm install mongoose –-save-dev
我們需要搞清楚mongoose的幾個概念:
Schema: 一種以文件形式存儲的數(shù)據(jù)庫模型骨架,不具備數(shù)據(jù)庫的操作能力
Model: 由Schema發(fā)布生成的模型,具有抽象屬性和行為的數(shù)據(jù)庫操作對
Entity: 由Model創(chuàng)建的實體,他的操作也會影響數(shù)據(jù)庫
我們創(chuàng)建接口的方式是通過express的Router,而接口里面操作數(shù)據(jù)庫就要用到mongoose進(jìn)行數(shù)據(jù)庫的連接,創(chuàng)建Schema,通過Schema創(chuàng)建model,再通過model進(jìn)行數(shù)據(jù)庫的增刪改查。
4、數(shù)據(jù)接口的創(chuàng)建我們現(xiàn)在已經(jīng)有了mongoDB數(shù)據(jù)庫,也會創(chuàng)建express應(yīng)用,大概知道怎么使用mongoose連接操作數(shù)據(jù)庫了,那我們就來建一個簡單的demo,來把這些東西組合起來,創(chuàng)建一個接口吧。
首先我們不妨先看一下之前我們創(chuàng)建的express應(yīng)用,訪問一下http://localhost:3000/users。發(fā)現(xiàn)居然是有這一個頁面的,就說明應(yīng)用為我們處理了users這個路由,跳轉(zhuǎn)到了指定的頁面。
我們看一下項目的目錄結(jié)構(gòu)。
里面有一個routes文件夾有users,打開如下所示,
var express = require("express"); var router = express.Router(); router.get("/", function(req, res, next) { res.send("respond with a resource"); }); module.exports = router;
我們看到我們看到的頁面是在這個地方生成了。那么又是在什么地方調(diào)用的呢?
var usersRouter = require("./routes/users"); app.use("/users", usersRouter);
在app.js里有這么兩句,查了下文檔會知道這其實是路由級中間件,效果就是能夠讓發(fā)到users的get請求在路由中處理。知道這些之后我們就仿照這種方式,在routes目錄下創(chuàng)建一個新的路由test.js,內(nèi)容也就寫個簡單的get請求,并在app.js中使用一下。
test.js:
var express = require("express"); var router = express.Router(); router.get("/", function(req, res, next) { res.send("test"); }); module.exports = router;
app.js增加:
var testRouter = require("./routes/test"); app.use("/test", testRouter);
我們訪問一下http://localhost:3000/test,ok,頁面里面出現(xiàn)了test。
接下來就是操作數(shù)據(jù)庫了,首先在Robo 3T 里新建一個叫做login_db的數(shù)據(jù)庫,里面有一個叫Collections的文件夾,實際上這個里面將會存放類似于表的數(shù)據(jù)。
安裝mongoose肯定是必須的,我們知道m(xù)ongoose操作數(shù)據(jù)庫使用的是Schema和model,那我們就在應(yīng)用里新建三個文件夾:config(用于連接數(shù)據(jù)庫)、schemas(創(chuàng)建schema)、models(創(chuàng)建model)。新的目錄結(jié)構(gòu)如下
首先在app.js里引入mongoose:
//引入mongoose,進(jìn)行數(shù)據(jù)庫的連接 var mongoose = require("./config/mongoose"); var db = mongoose();
在新創(chuàng)建的config里面創(chuàng)建config.js和mongoose.js分別提供數(shù)據(jù)庫的地址和對數(shù)據(jù)庫進(jìn)行連接。如下:
config.js:
// 數(shù)據(jù)庫地址: "mongodb://用戶名:密碼@ip地址:端口號/數(shù)據(jù)庫"; module.exports = { mongodb : "mongodb://root:root@localhost:27017/login_db" }
mongoose.js:
const mongoose = require("mongoose"); const config = require("./config"); module.exports = ()=>{ mongoose.connect(config.mongodb);//連接mongodb數(shù)據(jù)庫 var db = mongoose.connection;// 實例化連接對象 db.on("error", console.error.bind(console, "連接錯誤:")); db.once("open", (callback) => { console.log("MongoDB連接成功??!"); }); return db; }
然后再去schemas下創(chuàng)建userSchema.js:
var mongoose = require("mongoose"); var Schema = mongoose.Schema; //創(chuàng)建Schema var userSchema = new Schema({ username:String, password:String }); module.exports = userSchema;
在models下創(chuàng)建User.js:
var mongoose = require("mongoose"); var UserSchema = require("../schemas/UserSchema"); //創(chuàng)建model,這個地方的login_user對應(yīng)mongodb數(shù)據(jù)庫中l(wèi)ogin_users的conllection var User = mongoose.model("login_user",UserSchema); module.exports = User;
最后,我們回到路由的test.js中,使用 var User = require("../models/User")引入模型。
在get方法中通過模型去操作數(shù)庫。我們從方法中取參數(shù),然后插入到數(shù)據(jù)庫中,這里可以參考下mongoose官網(wǎng)。代碼如下:
router.get("/", function(req, res, next) { let user = new User({ username: req.query.username, }); user.save(function (err) { if (err){ res.send({ status: 0 }) return console.error(err); }else{ res.send({ status: 1 }) return; } }); });
ok,到此,應(yīng)該就能正常通過get請求對數(shù)據(jù)進(jìn)行插入了,我們重啟一下服務(wù)器。
哇,連接失敗了。。。
我們看一下,貌似是權(quán)限的問題,回顧一下,我們在config.js里用的是root/root去連接的,而數(shù)據(jù)庫可能沒這個用戶,好的,我們?nèi)?chuàng)建。
在數(shù)據(jù)庫上運行下面這句。
db.createUser({user:"root",pwd:"root",roles:["readWrite"]})
在啟動一下...ok,數(shù)據(jù)庫連接成功!
在瀏覽器里直接發(fā)個get請求:http://localhost:3000/test?username=admin
ok,返回了{(lán)"status":1}。再去數(shù)據(jù)庫里看下,果然有了一條數(shù)據(jù)。
以上,就是創(chuàng)建一個簡單接口的方式。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/98378.html
摘要:本文源碼簡介之前剛?cè)腴T并做好了一個簡而全的純?nèi)彝暗捻椖?,?shù)據(jù)都是本地模擬請求的詳情請移步這里為了真正做到數(shù)據(jù)庫的真實存取,于是又開始入門了并以此來為之前的頁面寫后臺數(shù)據(jù)接口。 本文源碼:Github 簡介: 之前剛?cè)腴Tvue并做好了一個簡而全的純vue2全家桶的項目,數(shù)據(jù)都是本地 json 模擬請求的;詳情請移步這里:vue-proj-demo 為了真正做到數(shù)據(jù)庫的真實存取,于是又...
摘要:小練習(xí)作者本文首發(fā)博客功能基于進(jìn)行登錄,注冊,留言的簡單網(wǎng)站。所以這個小練習(xí),從一個簡單的方面入手,希望能給踩過同樣多坑的同路人一點啟發(fā)。就意味著要重新登錄。的作用是進(jìn)行進(jìn)程守護,當(dāng)你的意外的停止的時候,進(jìn)行重啟。 Vue+Koa+Mongodb 小練習(xí) 作者: Pawn 本文首發(fā): Pawn博客 功能: 基于vue koa mongodb進(jìn)行登錄,注冊,留言的簡單網(wǎng)站。 體驗地址: ...
摘要:本使用創(chuàng)建本地服務(wù)器,在就能完成全部流程,并不需要線上服務(wù)器。路徑要與后端接口一致。后端返回成功后,前端數(shù)據(jù)中對應(yīng)的元素也要刪掉,更新視圖。控制器里拿一個方法出來說一下吧,完整的代碼都在。讀取操作完成后調(diào)用釋放連接。 寫在前面 本文只是本人學(xué)習(xí)過程的一個記錄,并不是什么非常嚴(yán)謹(jǐn)?shù)慕坛蹋M痛蠹乙黄鸸餐M(jìn)步。也希望大家能指出我的問題。適合有一定基礎(chǔ),志在全棧的前端初學(xué)者學(xué)習(xí),從點擊按鈕...
摘要:技術(shù)棧使用實現(xiàn)的前后端分離的簡約風(fēng)格的博客線上地址源碼在上使用的是騰訊云的服務(wù)器博客介紹前后端分離開發(fā)默認(rèn)是后臺目錄,其中目錄下是前端代碼啟動項目項目默認(rèn)是端口項目進(jìn)入目錄下默認(rèn)是端口技術(shù)棧前端后端實現(xiàn)功能主頁列表頁側(cè)邊欄富文 技術(shù)棧:使用node.js + koa2 + mongoDB + vue + vue-router + element-ui 實現(xiàn)的前后端分離的簡約風(fēng)格的博客 ...
閱讀 1410·2021-11-22 15:25
閱讀 3430·2021-10-21 09:38
閱讀 1635·2021-10-19 13:21
閱讀 1052·2021-09-06 15:00
閱讀 1748·2019-08-30 15:44
閱讀 2641·2019-08-29 15:40
閱讀 3585·2019-08-29 13:44
閱讀 2133·2019-08-26 16:56