亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

用一個登錄demo貫穿vue+node+mongoDB前后端分離的開發(fā)方式

MiracleWong / 2665人閱讀

摘要:一般如果不成功,可以試著看看端口號是否被占用等問題。如下數(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

相關(guān)文章

  • 基于 Vue2+Node+mongoDB 前后分離全棧練手小項目

    摘要:本文源碼簡介之前剛?cè)腴T并做好了一個簡而全的純?nèi)彝暗捻椖?,?shù)據(jù)都是本地模擬請求的詳情請移步這里為了真正做到數(shù)據(jù)庫的真實存取,于是又開始入門了并以此來為之前的頁面寫后臺數(shù)據(jù)接口。 本文源碼:Github 簡介: 之前剛?cè)腴Tvue并做好了一個簡而全的純vue2全家桶的項目,數(shù)據(jù)都是本地 json 模擬請求的;詳情請移步這里:vue-proj-demo 為了真正做到數(shù)據(jù)庫的真實存取,于是又...

    jay_tian 評論0 收藏0
  • Vue+Koa+Mongodb 小練習(xí)

    摘要:小練習(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)站。 體驗地址: ...

    趙春朋 評論0 收藏0
  • 邁出全棧第一步,vue+node+mysql獨立完成前后分離增刪改查流程

    摘要:本使用創(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í),從點擊按鈕...

    fsmStudy 評論0 收藏0
  • 使node+vue實現(xiàn)一個前后分離簡約博客

    摘要:技術(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)格的博客 ...

    longshengwang 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<