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