egg學習筆記第二十三天:mongoose入門以及mongoose實現數據的增刪改查

1、mongoose介紹

Mongoose實在nodejs異步環境下對MongoDB進行便捷操做的對象模型工具。Mongoose是nodejs的驅動,不能做爲其餘語言的驅動。javascript

mongoose有兩個特色:java

一、經過關係型數據庫的思想來設計非關係型數據庫。node

二、基於MongoDB驅動,簡化操做。mongodb

2、使用Mongoose

一、新建mongoose文件夾,文件夾下新建mongoose_demo.js文件數據庫

二、執行npm init -y,生成package.json文件npm

cnpm init -y

三、安裝mongoosejson

cnpm i mongoose --save

目錄結構以下所示:異步

④mongoose_demo.js裏面鍵入:mongoose

const mongoose = require("mongoose");
mongoose.connect("mongodb://127.0.0.1:27017/eggcms");

// 若是有帳戶密碼須要採用下面的鏈接方式:
// mongoose.connect('mongodb://eggadmin:123456@localhost:27017/eggcms');

⑤定義 Schema:工具

數據庫中的 Schema,爲數據庫對象的集合。schema 是 mongoose 裏會用到的一種數據模式, 能夠理解爲表結構的定義;每一個 schema 會映射到 mongodb 中的一個 collection,它不具有操做數據庫的能力。

定義一個動漫表的Schema:

⑥定義模型

定義好了Schema,接下就是生成Model。model是由schema生成的模型,能夠對數據庫的操做。

注意:mongoose.model 裏面能夠傳入兩個參數也能夠傳入三個參數

mongoose.model(參數 1:模型名稱(首字母大寫),參數 2:Schema)

mongoose.model(參數 1:模型名稱(首字母大寫),參數 2:Schema, 參數 3:數據庫集合名稱)

若是傳入 2 個參數的話:這個模型會和模型名稱相同的複數的數據庫創建鏈接: 通常用第二種傳入 3 個參數的話:模型默認操做第三個參數定義的集合名稱

// 一、引入mongoose
const mongoose = require("mongoose");

// 二、鏈接數據庫
mongoose.connect("mongodb://127.0.0.1:27017/eggcms");

// 若是有帳戶密碼須要採用下面的鏈接方式:
// mongoose.connect('mongodb://eggadmin:123456@localhost:27017/eggcms');

// 三、操做動漫表(集合)  定義一個Schema 對字段的格式能夠進行一些驗證 Schema裏的對象和數據庫表裏面的字段須要一一對應
var DongManSchema = mongoose.Schema({
  name: String,
  age: Number,
  status: Number
});

// 定義model
var DongMan = mongoose.model("DongMan", DongManSchema, dongman);

⑦給dongman表中增長一條數據:鍵入以下代碼,執行 node mongoose_demo.js

// 一、引入mongoose
const mongoose = require("mongoose");

// 二、鏈接數據庫
mongoose.connect("mongodb://127.0.0.1:27017/eggcms");

// 若是有帳戶密碼須要採用下面的鏈接方式:
// mongoose.connect('mongodb://eggadmin:123456@localhost:27017/eggcms');

// 三、操做動漫表(集合)  定義一個Schema 對字段的格式能夠進行一些驗證 Schema裏的對象和數據庫表裏面的字段須要一一對應
var DongmanSchema = mongoose.Schema({
  name: String,
  age: Number,
  status: Number
});

// 定義model,操做數據庫
var DongMan = mongoose.model("Dongman", DongmanSchema, "dongman");

// 增長數據
// 實例化Model, DongMan Model 建立增長的數據
// 實例.save()
var dongman = new DongMan({
  name: "犬夜叉",
  age: 18,
  status: 0
});
dongman.save(function(err) {
  if (err) {
    console.log(err);
    return;
  }
  console.log("成功");
});

能夠看到數據庫可視化工具中多了一條數據。

⑧查詢表中的數據:

// 定義model,操做數據庫
var DongMan = mongoose.model("Dongman", DongmanSchema, "dongman");

// 查詢dongman表中的數據;
DongMan.find({}, function(err, doc) {
  if (err) {
    console.log(err);
    return;
  }
  console.log(doc);
});

⑨修改表中的數據,找到指定Id的數據,將name犬夜叉變爲name火影忍者。

// 定義model,操做數據庫
var DongMan = mongoose.model("Dongman", DongmanSchema, "dongman");

DongMan.updateOne(
  {
    _id: "5ea99dd5edd15105512ad7fa"
  },
  {
    name: "火影忍者"
  },
  function(err, doc) {
    if (err) {
      return console.log(err);
    }
    console.log("成功");
  }
);

查看GUI工具,可得數據已更新

 

⑩刪除數據,刪除指定id數據。

// 定義model,操做數據庫
var DongMan = mongoose.model("Dongman", DongmanSchema, "dongman");

// 刪除數據
DongMan.deleteOne({ _id: "5ea99dd5edd15105512ad7fa" }, (err, res) => {
  if (err) {
    return console.log(err);
  }
  console.log(res);
});

GUI刷新後,發現數據被清空

 

感受都是些傻瓜式操做,可是仍是要熟悉的。GG晚安思密達。

相關文章
相關標籤/搜索