全棧開發(fā)學(xué)習(xí)(Node+Vue+Mongodb)(三)——后臺接口與數(shù)據(jù)庫準(zhǔn)備

1 前端接口(admin)準(zhǔn)備

  • 安裝axios用于請求接口提交數(shù)據(jù):

    npm i axios

  • 在admin根目錄新建http.js文件,在文件中引入axios

    import axios from 'axios'
    
  • 在http.js中創(chuàng)建實例

    const http=axios.create({
       baseURL:'http://localhost:3000/admin/api'
       //baseURL:process.env.VUE_APP_API_URL || '/admin/api',
    })
    
  • 導(dǎo)出http變量

    export default http
    
  • 在main.js中引入變量,并綁定到原型上

    import http from './http'
    Vue.prototype.$http=http
    

2 服務(wù)端接口(server)準(zhǔn)備

  • 安裝3個必要的模塊(express5.0、mongoose[連接數(shù)據(jù)庫]、cors[允許跨域請求]):

    npm i express@next mongoose cors

  • 在server文件夾的index.js中引入剛安裝好的模塊

    const express=require("express")
    app.use(express.json())
    app.use(require('cors')())
    
  • 創(chuàng)建express的實例

    const app=express()
    
  • 啟動該實例

    app.listen(3000,()=>{
        console.log('http://localhost:3000')
    });
    
  • 創(chuàng)建路由文件夾routes/admin,創(chuàng)建文件index.js,在這里寫具體的路由

  • 在routes/admin/index.js中創(chuàng)建app的函數(shù),然后在根目錄的index.js中引入這個app

    module.exports=app=>{
        const express=require('express')
        const router=express.Router({mergeParams:true})// 創(chuàng)建express的子路由,再掛在router到app上
        }
    
    require('./routes/admin')(app)
    

3 數(shù)據(jù)庫準(zhǔn)備

  • 創(chuàng)建數(shù)據(jù)庫插件,連接數(shù)據(jù)庫,新建文件plugins/db.js

  • 引入到server/index.js中

    require('./plugins/db')(app)
    
  • 在db.js中創(chuàng)建函數(shù),在函數(shù)中引用mongoose

    module.exports=app=>{
        //連接數(shù)據(jù)庫
        const mongoose=require("mongoose")
        mongoose.connect('mongodb://127.0.0.1:27017/node-vue-wzry',{
            useNewUrlParser:true   //連接參數(shù)
        })
        require('require-all')(__dirname + '/../models') //引用了models里所有js
    }
    

4 創(chuàng)建模型

  • 在server文件夾中創(chuàng)建models,用于存放模型

  • 模型基本格式

    const mongoose=require('mongoose')
    //新建模型
    const schema=new mongoose.Schema({
        **字段以及字段類型**
    })
    module.exports=mongoose.model('Category',schema) //導(dǎo)出模型
    
  • 創(chuàng)建好后在server/admin/index.js中引入模型

    const xxx(模型名)=require('../../models/模型名')
    
  • 在router的post接口中返回這個模型

     router.post('/xxxxxx',async(req,res)=>{
            const model=await req.Model.create(req.body)
            res.send(model)
        })
    

5 在前端發(fā)起請求

具體的Vue組件的methods中(以保存數(shù)據(jù)為例):

async save(){
   const res=await this.$http.post('xxxxx(接口名)',this.model)
 }

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容