express創建api服務器(接口)及數據庫操作
1.前期准備工作
-
npx express -e 項目名稱
其他安裝方式
$ npm i express-generator -g
$ cnpm i express-generator -g
$ yarn add express-generator global -
創建成功后會有一些目錄文件夾,進入項目安裝依賴 cnpm i
bin ( www 啟動了一個靜態服務器( web服務器 ))
node_modules 真個項目的依賴包
public 靜態資源文件
routes 路由文件夾
view(xxx.ejs 項目的模板)
app.js 整個項目的入口文件package.json 整個項目的依賴配置文件
2.打造接口
-
項目環境搭建完成后,我們先找到routes文件夾,建一個port.js文件,先暴露接口文件(暴露port.js文件)然后找到app.js文件。
//先要暴露接口 const express = require('express'); const router = new express.Router(); module.exports = router;然后在app.js文件里引入我們在routes里創建的port.js文件:
var portRouter = require('./routes/port');繼續在app.js文件里使用我們的這個文件:
app.use('/port',portRouter); -
緊接着,我們在port.js文件中打造接口,還需要在views目錄下新建一個port.ejs文件
const express = require('express'); const router = new express.Router(); router.get('/',( req,res,next ) => { res.render('port',{ ports: JSON.stringify( [ { id: 1, content: '敲代碼' }, { id: 2, content: '打籃球' } ] ) }) }) module.exports = router; -
前端請求這個接口的時候屬於跨域請求,所以,需要一個應用級中間件(cors),我們可以在app.js文件中通過app.use 來使用這些中間件,中間件的分類:
$ cnpm i cors -S 來安裝cors
在入口文件(app.js)中設置跨域的中間件
/找到app.js文件 var cors = require('cors') //引入cors模塊之后,在終端用命令安裝cors模塊 //安裝cors的命令 $ cnpm i cors -S app.use( cors ({ "origin": "*", "methods": "GET,HEAD,PUT,PATCH,POST,DELETE", "preflightContinue": false, "optionsSuccessStatus": 200 }) ) -
找到views目錄中的port.ejs文件:
<%- ports %> -
使用后端接口測試工具測試一下接口
//Insomnia后端接口測試工具測試的結果 [ { "id": 1, "content": "敲代碼" }, { "id": 2, "content": "打籃球" } ]
3.連接數據庫
-
cnpm i mongoose -D 安裝mongoose
-
連接數據庫
-
使用mongoose連接數據庫的前提條件是:
1、mongo數據庫已經運行。
2、已經安裝了mongoose包
-
var mongoose = require("mongoose");
// 連接字符串格式為mongodb://主機/數據庫名
mongoose.connect('mongodb://localhost/student);
// 連接本地mongodb ,本機的ip 127.0.0.1,端口:27017 數據庫:student mongoose.connect("mongodb://127.0.0.1:27017/student",function(err){ if(!err){//如果連接成功,則打印出connected to Mongodb console.log("connected to Mongodb"); }else{ throw err;//如果連接失敗,則拋出異常 } });
-
4.數據庫的操作流程
存儲數據步驟:定義Schema (骨架) > 創建model(模型)>Entity實例化方法。
注意:骨架不能操作數據庫
通過模型來操作
1、定義骨架
mongoose有一個Schema的方法,得到一個Schema 的構造函數,通過new這個構造函數得到骨架
var Schema = mongoose.Schema;
//通過Schema創建一個骨架
var studentSchema = new Schema({
name: String,
age: String
});
2.創建模型
通過studentSchema 創建一個模型studentModel
var studentModel = mongoose.model("students",studentSchema );//創建模型
var instance1 = new studentModel (); //實例化模型得到實體
instance1.name="tangyan";
instance1.age="18";
//通過save方法保存
instance1.save(function(err){
if (err) {
console.log('保存失敗');
return;
}
});
3.刪除數據
思路:
1、刪除數據首先要知道刪除哪一條信息,需要知道信息的id.
2、把對應id的數據查詢出來,執行remove方法
假如我們要刪除id=”57e24521a755e1154039a403”的數據。
var id=”57e24521a755e1154039a403”;
studentQueryModel.findById(id,function(err,doc){
if(!doc){
return next(new NotFound("Doc not found"))
}else{
doc.remove(function(){
console.log('刪除成功');
})
-
修改數據
修改數據的思路:先把對應id的數據查詢出來,對需要修改的字段重新賦值,然后執行save方法保存。
假如我們要修改id=”57e24521a755e1154039a403”的數據。
var id=”57e24521a755e1154039a403”;
studentQueryModel.findById(id,function(err,doc){
//console.log(doc);
doc.name="xiaotangyan" ;//把name修改為xiaotangyan
doc.save(function(err){
if(!err){
console.log('修改成功');
}else{
throw err;
}
});
});
5.查詢數據
下面find第一個參數{}里面為空,表示查詢所有的數據:
docs表示查詢的結果集合,可用於渲染ejs模板引擎。
studentQueryModel.find({},function(err,docs){
console.log(docs);
});
