摘要:類比一下你有一個巨型停車場,里邊分了不同的停車區集合,這里的,每個停車區可以停很多車下文提到的,相當于每個數據集合里邊可以有很多張數據表。
Node.js利用mongoose連接mongodb數據庫
</>復制代碼
Node.js連接mongodb數據庫有很多種方法,通過mongoose模塊引入是其中的一個方法
代碼組織結構
</>復制代碼
|---|根目錄
|---|---|connect.js(mongoose測試連接)
|---|---|user.js(定義user數據表)
|---|---|operate.js(定義mongodb的增刪改查功能)
|---|---|login.js(Node后臺調用operate.js文件的方法處理數據)
1. 引入mongoose測試連接
</>復制代碼
當前使用的mongoose版本為4.13.7
該文件為connect.js
1.1 代碼部分</>復制代碼
const mongoose = require("mongoose");
const DB_URL = "mongodb://127.0.0.1:27017/infos";
mongoose.Promise = global.Promise;
mongoose.connect(DB_URL, { useMongoClient: true });
mongoose.connection.on("connected", () => {
console.log("mongodb數據庫連接成功")
});
mongoose.connection.on("error", (error) => {
console.log("mongodb數據庫連接失敗", error)
});
module.exports = mongoose;
1.2 代碼分析
1.2.1 引入mongoose模塊
const mongoose = require("mongoose");
1.2.2 獲取mongodb的本機地址const DB_URL = "mongodb://127.0.0.1:27017/infos";
127.0.0.1是本地IP地址
27017是mongodb的服務啟動端口
infos是mongodb的一個數據集合名字
mongodb可以有很多數據集合,每個集合中可以有很多數據表。
類比一下:你有一個巨型停車場(mongodb),里邊分了不同的停車區(集合,這里的infos),每個停車區可以停很多車((下文提到的user),相當于每個數據集合里邊可以有很多張數據表)。
如果需要給mongodb加上用戶及密碼,可以這樣
const DB_URL = "mongodb://username:password@127.0.0.1:27017/infos";
其中username為用戶名,中間英文:,password為密碼,其余不變
1.2.3 連接數據庫成功mongoose.connection.on("connected", callback())
數據庫連接成功后,會在控制臺輸出mongodb數據庫連接成功
1.2.4 連接數據庫失敗mongoose.connection.on("error", callback())
數據庫連接成功后,會在控制臺輸出mongodb數據庫連接失敗和錯誤信息
1.2.5 導出mongoose模塊module.exports = mongoose;
2. 定義每張數據表的字段該文件為user.js
2.1 代碼介紹</>復制代碼
const mongoose = require("mongoose");
const db = require("./connect.js");
const userSchema = new mongoose.Schema({
number: { type: Number},
email: { type: String },
password: { type: String },
rePassword: { type: String },
mobile: { type: String },
question: { type: String },
answer: { type: String },
});
let userModel = db.model("user", userSchema);
module.exports = userModel;
2.2 代碼分析
2.2.1 引入mongoose模塊
const mongoose = require("mongoose");
2.2.1 引入連接mongodb數據庫的模塊const db = require("./connect.js");
2.2.2 定義Schemaconst userSchema = new mongoose.Schema({})
通過mongoose對象的Schema屬性創建一個Schema對象
</>復制代碼
Schema原意為架構
在mongodb中,每一個數據字段都要有固定的數據類型,所以Schema在mongoose中的意思為,每一張數據表對應的字段的數據類型
Schema所能夠擁有的數據類型有以下幾個
String
Number
Date
Buffer
Boolean
Mixed
ObjectId
Array
字段介紹,以number字段為例
type是該字段的數據類型
default是該字段的默認值
還有很多其他的屬性,以及可以自定義屬性
2.2.3 確認數據表和該數據表的字段let userModel = db.model("user", userSchema);
定義一個數據表userModel
使用db.model方法,第一個參數是數據表的名字,第二個參數是該數據表使用的Schema
2.2.4 最終導出定義的數據表module.exports = userModel;
導出之后,在operate.js中使用這個對象的mongodb的增刪改查方法
3. 定義mongodb的增刪改查功能 3.1 代碼部分該文件為operate.js
</>復制代碼
let userModel = require("./user.js");
module.exports = {
save(data) {
return new Promise((resolve, reject) => {
userModel.create(data, (err, docs) => {
if (err) {
rejct(err);
} else {
resolve(docs);
}
})
})
},
find(data = {}, fields = null, options = {}) {
return new Promise((resolve, reject) => {
//model.find(需要查找的對象(如果為空,則查找到所有數據), 屬性過濾對象[可選參數], options[可選參數], callback)
userModel.find(data, fields, options, (error, doc) => {
if (error) {
reject(error)
} else {
resolve(doc)
}
})
})
},
findOne(data) {
return new Promise((resolve, reject) => {
//model.findOne(需要查找的對象,callback)
userModel.findOne(data, (error, doc) => {
if (error) {
reject(error)
} else {
resolve(doc)
}
})
})
},
findById(data) {
return new Promise((resolve, reject) => {
//model.findById(需要查找的id對象 ,callback)
userModel.findById(data, (error, doc) => {
if (error) {
reject(error)
} else {
resolve(doc)
}
})
})
},
update(conditions, update) {
return new Promise((resolve, reject) => {
//model.update(查詢條件,更新對象,callback)
userModel.update(conditions, update, (error, doc) => {
if (error) {
reject(error)
} else {
resolve(doc)
}
})
})
},
remove(conditions) {
return new Promise((resolve, reject) => {
//model.update(查詢條件,callback)
userModel.remove(conditions, (error, doc) => {
if (error) {
reject(error)
} else {
resolve(doc)
}
})
})
}
};
3.2 代碼分析
引入user模塊
let userModel = require("../models/users");
引入該文件的目的是,讓userModel這個數據表直接的調用mongodb的各種方法
4. 后臺直接使用operate處理數據該文件為login.js
4.1 代碼部分</>復制代碼
const express = require("express");
const router = express.Router();
let operate = require("./operate");
router.post("/", function (req, res, next) {
let param = {};
param.email = req.body.email;
param.password = req.body.password;
console.log(param);
operate.save(param).then(result => {
if (result) {
res.json({
data: result,
success: true
})
} else {
res.json({
data: result,
success: false
})
}
});
});
module.exports = router;
4.2 代碼分析
需要熟練使用Express的router方法
引入Express,定義一個post方法
post方法傳遞的對象數據掛在在req.body上
直接調用operate.save()方法,傳遞param對象參數
獲取到返回結果result,對獲取到的結果進行進一步處理
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/19211.html
摘要:類比一下你有一個巨型停車場,里邊分了不同的停車區集合,這里的,每個停車區可以停很多車下文提到的,相當于每個數據集合里邊可以有很多張數據表。 Node.js利用mongoose連接mongodb數據庫 Node.js連接mongodb數據庫有很多種方法,通過mongoose模塊引入是其中的一個方法 代碼組織結構 |---|根目錄 |---|---|connect.js(mongoose測...
摘要:搭建后臺的全過程近期基于搭建前端項目,搭建后臺,遇到了不少問題,總結博客如下,有什么不正確的地方,請大家批評指正是非關系型數據庫。是用來啟動的,是的命令行客戶端。 Node + mongoDB 搭建后臺的全過程 近期基于 vue-cil 搭建前端項目, express + mongoose 搭建后臺,遇到了不少問題,總結博客如下,有什么不正確的地方,請大家批評指正^?_?^! mong...
摘要:前言要做一個全沾的工程師,對于后端和數據庫來說,即使不認識也要見個面的。基本了解的概念就好,主要是安裝上數據庫,并進行簡單的增刪操作。 前言:要做一個全沾的工程師,對于后端和數據庫來說,即使不認識也要見個面的。本文給的例子很簡單,也貼出來源碼,只要一步步下來,就可以跑起來啦~~~ 思考一個需求:做一個登錄頁面,自己搭建服務和數據庫,將用戶輸入的登錄信息保存到數據庫如何完成呢:首先選擇...
摘要:本文源碼簡介之前剛入門并做好了一個簡而全的純全家桶的項目,數據都是本地模擬請求的詳情請移步這里為了真正做到數據庫的真實存取,于是又開始入門了并以此來為之前的頁面寫后臺數據接口。 本文源碼:Github 簡介: 之前剛入門vue并做好了一個簡而全的純vue2全家桶的項目,數據都是本地 json 模擬請求的;詳情請移步這里:vue-proj-demo 為了真正做到數據庫的真實存取,于是又...
摘要:的邏輯結構是一種層次結構,主要由文檔集合數據庫這三部分組成的。文檔由鍵值對構成,像等,它是核心單元,的文檔,相當于關系數據庫中的一行記錄。我們以此為例看它如何使用真實項目中參考學習筆記之的使用入門教程的一些操作命令 showImg(https://segmentfault.com/img/bVN45N?w=1192&h=578); 簡介 在說MongoDB數據插入操作之前,我們先來簡單...
閱讀 1852·2021-08-19 11:12
閱讀 1426·2021-07-25 21:37
閱讀 990·2019-08-30 14:07
閱讀 1269·2019-08-30 13:12
閱讀 653·2019-08-30 11:00
閱讀 3530·2019-08-29 16:28
閱讀 995·2019-08-29 15:33
閱讀 2972·2019-08-26 13:40