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晚安思密达。

相关文章
相关标签/搜索