国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Node.js學習之路23——Node.js利用mongoose連接mongodb數據庫

ssshooter / 2955人閱讀

摘要:類比一下你有一個巨型停車場,里邊分了不同的停車區集合,這里的,每個停車區可以停很多車下文提到的,相當于每個數據集合里邊可以有很多張數據表。

Node.js利用mongoose連接mongodb數據庫

</>復制代碼

  1. Node.js連接mongodb數據庫有很多種方法,通過mongoose模塊引入是其中的一個方法

代碼組織結構

</>復制代碼

  1. |---|根目錄
  2. |---|---|connect.js(mongoose測試連接)
  3. |---|---|user.js(定義user數據表)
  4. |---|---|operate.js(定義mongodb的增刪改查功能)
  5. |---|---|login.js(Node后臺調用operate.js文件的方法處理數據)
1. 引入mongoose測試連接

</>復制代碼

  1. 當前使用的mongoose版本為4.13.7

該文件為connect.js

1.1 代碼部分

</>復制代碼

  1. const mongoose = require("mongoose");
  2. const DB_URL = "mongodb://127.0.0.1:27017/infos";
  3. mongoose.Promise = global.Promise;
  4. mongoose.connect(DB_URL, { useMongoClient: true });
  5. mongoose.connection.on("connected", () => {
  6. console.log("mongodb數據庫連接成功")
  7. });
  8. mongoose.connection.on("error", (error) => {
  9. console.log("mongodb數據庫連接失敗", error)
  10. });
  11. 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地址

27017mongodb的服務啟動端口

infosmongodb的一個數據集合名字

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 代碼介紹

</>復制代碼

  1. const mongoose = require("mongoose");
  2. const db = require("./connect.js");
  3. const userSchema = new mongoose.Schema({
  4. number: { type: Number},
  5. email: { type: String },
  6. password: { type: String },
  7. rePassword: { type: String },
  8. mobile: { type: String },
  9. question: { type: String },
  10. answer: { type: String },
  11. });
  12. let userModel = db.model("user", userSchema);
  13. 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 定義Schema

const userSchema = new mongoose.Schema({})

通過mongoose對象的Schema屬性創建一個Schema對象

</>復制代碼

  1. Schema原意為架構
    mongodb中,每一個數據字段都要有固定的數據類型,所以Schemamongoose中的意思為,每一張數據表對應的字段的數據類型

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

</>復制代碼

  1. let userModel = require("./user.js");
  2. module.exports = {
  3. save(data) {
  4. return new Promise((resolve, reject) => {
  5. userModel.create(data, (err, docs) => {
  6. if (err) {
  7. rejct(err);
  8. } else {
  9. resolve(docs);
  10. }
  11. })
  12. })
  13. },
  14. find(data = {}, fields = null, options = {}) {
  15. return new Promise((resolve, reject) => {
  16. //model.find(需要查找的對象(如果為空,則查找到所有數據), 屬性過濾對象[可選參數], options[可選參數], callback)
  17. userModel.find(data, fields, options, (error, doc) => {
  18. if (error) {
  19. reject(error)
  20. } else {
  21. resolve(doc)
  22. }
  23. })
  24. })
  25. },
  26. findOne(data) {
  27. return new Promise((resolve, reject) => {
  28. //model.findOne(需要查找的對象,callback)
  29. userModel.findOne(data, (error, doc) => {
  30. if (error) {
  31. reject(error)
  32. } else {
  33. resolve(doc)
  34. }
  35. })
  36. })
  37. },
  38. findById(data) {
  39. return new Promise((resolve, reject) => {
  40. //model.findById(需要查找的id對象 ,callback)
  41. userModel.findById(data, (error, doc) => {
  42. if (error) {
  43. reject(error)
  44. } else {
  45. resolve(doc)
  46. }
  47. })
  48. })
  49. },
  50. update(conditions, update) {
  51. return new Promise((resolve, reject) => {
  52. //model.update(查詢條件,更新對象,callback)
  53. userModel.update(conditions, update, (error, doc) => {
  54. if (error) {
  55. reject(error)
  56. } else {
  57. resolve(doc)
  58. }
  59. })
  60. })
  61. },
  62. remove(conditions) {
  63. return new Promise((resolve, reject) => {
  64. //model.update(查詢條件,callback)
  65. userModel.remove(conditions, (error, doc) => {
  66. if (error) {
  67. reject(error)
  68. } else {
  69. resolve(doc)
  70. }
  71. })
  72. })
  73. }
  74. };
3.2 代碼分析

引入user模塊

let userModel = require("../models/users");

引入該文件的目的是,讓userModel這個數據表直接的調用mongodb的各種方法

4. 后臺直接使用operate處理數據

該文件為login.js

4.1 代碼部分

</>復制代碼

  1. const express = require("express");
  2. const router = express.Router();
  3. let operate = require("./operate");
  4. router.post("/", function (req, res, next) {
  5. let param = {};
  6. param.email = req.body.email;
  7. param.password = req.body.password;
  8. console.log(param);
  9. operate.save(param).then(result => {
  10. if (result) {
  11. res.json({
  12. data: result,
  13. success: true
  14. })
  15. } else {
  16. res.json({
  17. data: result,
  18. success: false
  19. })
  20. }
  21. });
  22. });
  23. module.exports = router;
4.2 代碼分析

需要熟練使用Expressrouter方法

引入Express,定義一個post方法

post方法傳遞的對象數據掛在在req.body

直接調用operate.save()方法,傳遞param對象參數

獲取到返回結果result,對獲取到的結果進行進一步處理

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/19211.html

相關文章

  • Node.js學習之路23——Node.js利用mongoose連接mongodb據庫

    摘要:類比一下你有一個巨型停車場,里邊分了不同的停車區集合,這里的,每個停車區可以停很多車下文提到的,相當于每個數據集合里邊可以有很多張數據表。 Node.js利用mongoose連接mongodb數據庫 Node.js連接mongodb數據庫有很多種方法,通過mongoose模塊引入是其中的一個方法 代碼組織結構 |---|根目錄 |---|---|connect.js(mongoose測...

    jsummer 評論0 收藏0
  • Node +MongoDB 搭建后臺的全過程

    摘要:搭建后臺的全過程近期基于搭建前端項目,搭建后臺,遇到了不少問題,總結博客如下,有什么不正確的地方,請大家批評指正是非關系型數據庫。是用來啟動的,是的命令行客戶端。 Node + mongoDB 搭建后臺的全過程 近期基于 vue-cil 搭建前端項目, express + mongoose 搭建后臺,遇到了不少問題,總結博客如下,有什么不正確的地方,請大家批評指正^?_?^! mong...

    voidking 評論0 收藏0
  • 【實戰】用 express+MongoDB 搭建一個完整的前端項目

    摘要:前言要做一個全沾的工程師,對于后端和數據庫來說,即使不認識也要見個面的。基本了解的概念就好,主要是安裝上數據庫,并進行簡單的增刪操作。 前言:要做一個全沾的工程師,對于后端和數據庫來說,即使不認識也要見個面的。本文給的例子很簡單,也貼出來源碼,只要一步步下來,就可以跑起來啦~~~ 思考一個需求:做一個登錄頁面,自己搭建服務和數據庫,將用戶輸入的登錄信息保存到數據庫如何完成呢:首先選擇...

    Steve_Wang_ 評論0 收藏0
  • 基于 Vue2+Node+mongoDB 的前后端分離全棧練手小項目

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

    jay_tian 評論0 收藏0
  • Node學習記錄: mongodb

    摘要:的邏輯結構是一種層次結構,主要由文檔集合數據庫這三部分組成的。文檔由鍵值對構成,像等,它是核心單元,的文檔,相當于關系數據庫中的一行記錄。我們以此為例看它如何使用真實項目中參考學習筆記之的使用入門教程的一些操作命令 showImg(https://segmentfault.com/img/bVN45N?w=1192&h=578); 簡介 在說MongoDB數據插入操作之前,我們先來簡單...

    zzzmh 評論0 收藏0

發表評論

0條評論

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