vue.js前臺(tái)+egg.js后臺(tái)+mongo數(shù)據(jù)庫(kù)實(shí)現(xiàn)簡(jiǎn)單的增刪改

一.egg.js后臺(tái)

具體的如何配置egg.js和新建項(xiàng)目我就不在這里啰嗦了,相關(guān)的文章非常多,或者去官網(wǎng)也能找到自己想要的缩抡。

直接步入正題。

新建一個(gè)egg項(xiàng)目,大概目錄結(jié)構(gòu)如下所示瞻想。


我們需要用到的大概就是controller,service,model,和router。沒(méi)有的可以自己新建娩嚼。

先連上mongo數(shù)據(jù)庫(kù)蘑险。

在config里面的config.default配置以下內(nèi)容。


url就是mongo數(shù)據(jù)庫(kù)的地址岳悟,test是表的名字佃迄。

在config里面的plugin配置以下內(nèi)容。


這樣配置基本就可以連上了贵少,不放心的可以測(cè)試一下呵俏。

// const mongoose = require('mongoose');

// mongoose.connect('mongodb://127.0.0.1:27017/test');

// const con = mongoose.connection;

// con.on('error', console.error.bind(console, '連接數(shù)據(jù)庫(kù)失敗'));

// con.once('open', () => {

//? console.log('連接成功');

// });

連上數(shù)據(jù)庫(kù)可以說(shuō)完成了前置工作。

現(xiàn)在開(kāi)始編寫(xiě)接口代碼滔灶。

在controller里面新建user.js


這只是簡(jiǎn)單的處理一下請(qǐng)求普碎,具體的代碼放在了service層里面,當(dāng)然直接在controller里面寫(xiě)也可以录平。

進(jìn)入到service層里面麻车,找到user.js,上面的add()則對(duì)應(yīng)service.user.add()函數(shù)斗这。


model大概是指數(shù)據(jù)庫(kù)吧动猬,user是指表的名字,create是添加數(shù)據(jù)的方法表箭,當(dāng)然赁咙,user并不一定是和數(shù)據(jù)庫(kù)的表的名字一致,具體是在model文件下配置免钻。

在model下新建一個(gè)user.js


這里是設(shè)定了字段的一些屬性彼水,比如userName類型是string等,不符合就會(huì)報(bào)錯(cuò)伯襟。

最后return mongoose.model里面的User則是之前在service里面的User猿涨。

簡(jiǎn)單的業(yè)務(wù)邏輯已經(jīng)編寫(xiě)好了,接下來(lái)配置路由姆怪。

打開(kāi)router.js叛赚,這是自動(dòng)生成的,不用新建稽揭。

router.post('/user/add', controller.user.add);


這些完成了俺附,其實(shí)后臺(tái)的工作就基本結(jié)束了。接下來(lái)就是前段調(diào)用接口的事情了溪掀。

二.vue.js前臺(tái)

同樣的事镣,如何生成vue項(xiàng)目我也不說(shuō)了,相關(guān)教程非常多揪胃。

新建一個(gè)vue項(xiàng)目璃哟。


配置一下config里面的dev.env.js和prod.env.js


這里BASE_API不是mongo數(shù)據(jù)庫(kù)的地址氛琢,是你后臺(tái)的地址,在你用egg.js便血丸代碼使用npm run dev運(yùn)行的時(shí)候給的地址随闪。

然后需要在src目錄下新建一個(gè)utils和一個(gè)store文件夾阳似。


在utils下面新建一個(gè)request.js,這是攔截器铐伴。

具體代碼如下撮奏。

import axios from 'axios'

// import { Message, MessageBox } from 'element-ui'

import store from '../store'

// import { getToken } from '@/utils/auth'

// 創(chuàng)建axios實(shí)例

const service = axios.create({

? baseURL: process.env.BASE_API, // api 的 base_url

? timeout: 5000 // 請(qǐng)求超時(shí)時(shí)間

})

// request攔截器

service.interceptors.request.use(

? config => {

//? ? if (store.getters.token) {

//? ? ? config.headers['authorization'] = getToken() // 讓每個(gè)請(qǐng)求攜帶自定義token 請(qǐng)根據(jù)實(shí)際情況自行修改

//? ? }

? ? console.log('config', config)

? ? return config

? },

? error => {

? ? // Do something with request error

? ? console.log(error) // for debug

? ? Promise.reject(error)

? }

)

// response 攔截器

service.interceptors.response.use(

? response => {

? ? /**

? ? * code為非20000是拋錯(cuò) 可結(jié)合自己業(yè)務(wù)進(jìn)行修改

? ? */

? ? if (response.status !== 200) {

? ? ? return Promise.reject('error')

? ? } else {

? ? ? console.log('response111111', response.data)

? ? ? return response.data

? ? }

? },

? error => {

? ? console.log('err' + error) // for debug

? ? // Message({

? ? //? message: error.message,

? ? //? type: 'error',

? ? //? duration: 5 * 1000

? ? // })

? ? // return Promise.reject(error)

? }

)

export default service

其中注釋的部分是登錄時(shí)會(huì)用到,現(xiàn)在只是單純的寫(xiě)添加接口不需要当宴。

然后store下面的index.js里面代碼如下畜吊。


其中vuex和axios需自行下載依賴,以后寫(xiě)登錄會(huì)用到户矢。

現(xiàn)在基本配置完成玲献,可以開(kāi)始編寫(xiě)代碼。


簡(jiǎn)單的寫(xiě)兩個(gè)輸入框和按鈕逗嫡。


接下來(lái)就是要寫(xiě)接口了青自。

在api文件夾下面新建user.js

引入request。

import request from '@/utils/request'


這就是添加接口驱证,將userName和age傳給后端延窜,url就是之前后端的router里寫(xiě)的路徑。

回到頁(yè)面上抹锄。

在script標(biāo)簽下引入接口逆瑞。


在methods寫(xiě)提交按鈕的submit方法


將前面綁定的userName和age傳給后端。


后臺(tái)打印一下數(shù)據(jù)伙单。

這個(gè)打印用了查詢方法获高,和前面添加方法大同小異,沒(méi)有寫(xiě)查詢方法的可以去數(shù)據(jù)庫(kù)里看吻育,不出意外的話應(yīng)該生成了這條數(shù)據(jù)念秧。

其他方法和這個(gè)差不多,本人也是新手布疼,要是寫(xiě)的不好還請(qǐng)多多包涵摊趾。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市游两,隨后出現(xiàn)的幾起案子砾层,更是在濱河造成了極大的恐慌,老刑警劉巖贱案,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肛炮,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)侨糟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門碍扔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人秕重,你說(shuō)我怎么就攤上這事蕴忆。” “怎么了悲幅?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)站蝠。 經(jīng)常有香客問(wèn)我汰具,道長(zhǎng),這世上最難降的妖魔是什么菱魔? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任留荔,我火速辦了婚禮,結(jié)果婚禮上澜倦,老公的妹妹穿的比我還像新娘聚蝶。我一直安慰自己,他們只是感情好藻治,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布碘勉。 她就那樣靜靜地躺著,像睡著了一般桩卵。 火紅的嫁衣襯著肌膚如雪验靡。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天雏节,我揣著相機(jī)與錄音胜嗓,去河邊找鬼。 笑死钩乍,一個(gè)胖子當(dāng)著我的面吹牛辞州,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播寥粹,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼变过,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了排作?” 一聲冷哼從身側(cè)響起牵啦,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎妄痪,沒(méi)想到半個(gè)月后哈雏,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年裳瘪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了土浸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡彭羹,死狀恐怖黄伊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情派殷,我是刑警寧澤还最,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站毡惜,受9級(jí)特大地震影響拓轻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜经伙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一扶叉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧帕膜,春花似錦枣氧、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至危纫,卻和暖如春宗挥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背种蝶。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工契耿, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人螃征。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓搪桂,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親盯滚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子踢械,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容