使用Mongoose来描述MongoDB

猫鼬是什么?用于操作MongoDB的npm模块。可以对MongoDB字段进行各种输入设置。

可以设置要插入到字段中的数据类型。

※MongoDB和MySQL的称谓差异

MySQL: MySQL是一种开源的关系型数据库管理系统。

スクリーンショット 2020-06-21 17.04.15.png

スクリーンショット 2020-06-21 17.05.20.png

スクリーンショット 2020-06-21 17.06.20.png

MongoDB(非关系型数据库)

スクリーンショット 2020-06-21 17.07.23.png

スクリーンショット 2020-06-21 17.09.01.png

スクリーンショット 2020-06-21 17.08.41.png

・建立应用程序时的文件结构示例

└── src
    ├── db
    │   └── mongoose.js     //mongooseのnpmモジュールを読み込み
    ├── index.js           //アプリのメイン処理を記述
    ├── models
    │   ├── task.js        //taskデータベースのためのフィールド設定
    │   └── user.js       //userデータベースのためのフィールド設定
    └── routers
        ├── task.js       //express・taskデータベース操作のためのルーティング処理
        └── user.js       //express・userデータベース操作のためのルーティング処理

加载mongoose
请参考npm包”Mongoose”的官方文档,链接为https://www.npmjs.com/package/mongoose。

在项目文件中,使用 “npm i mongoose” 命令安装mongoose。

加载蒙古鼠程序

请参考 “mongoose的官方文档”(https://mongoosejs.com/),编写用于读取的代码。

 


const mongoose = require('mongoose')

//mongodbのポートの読み込みと、mongoDBのコレクション名(task-manager-api)をつける
mongoose.connect('mongodb://localhost:27017/task-manager-api', {
  useNewUrlParser: true, 
  useUnifiedTopology: true,
  useFindAndModify: false
});

<参考>”mongoose的官方文件”(https://mongoosejs.com/)的代码。


//mongooseモジュールの読み込み
const mongoose = require('mongoose');
//mongodbのポートの読み込みと、mongoDBのコレクション名(test)をつける
mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true, useUnifiedTopology: true});

//const Cat:Catというドキュメントを作成
//'Cat':データモデルの名前
//nameフィールドのデータ型をStringに設定。
const Cat = mongoose.model('Cat', { name: String });

//"Cat"データモデルの新しいインスタンスを作成。
//kittyというドキュメントで、nameは'Zildjian'
const kitty = new Cat({ name: 'Zildjian' });

//kittyドキュメントをデータベースに保存する。保存できたら"meow"と表示させる
kitty.save().then(() => console.log('meow'));

设定要插入的数据类型为 mongoose。

设定输入数据类型<官方文档>
参考「Schemas」( https://mongoosejs.com/docs/guide.html#statics )。

スクリーンショット 2020-06-21 17.28.09.png
例:他是一个非常慷慨的人。

const Cat = mongoose.model('Cat', { 
  name: {
     type: String  //データ型は文字列
},
  age: {
     type: Number //データ型は数字
},
  isMine: {
     type: Boolean  //データ型はtrueかfalseのどちらか
}
});

创建自定义数据格式、设置最小值/最大值、设置必填项、设置错误处理。<官方文件>
参考”验证”(https://mongoosejs.com/docs/validation.html#built-in-validators)

・将字符识别为小写,并删除空白间隔(数据清洗)

const User = mongoose.model('User', {
  password:{
    type: String,
    required: true,  //入力必須設定
    trim: true,  //空白を無くして認識
    minlength: 7, //最小入力文字数設定

  //validate(value:入力した値)で、入力するデータ形式を自作
    validate(value){
       //toLowerCaseで、小文字も大文字も小文字と認識する設定
      if(value.toLowerCase().includes('password')){

    //エラーを起こして処理を分岐させる
        throw new Error ('Do not use "password" to password')
      }
    }
  }
将默认输入设置

const Task = mongoose.model('Task', {
  complete:{
    type: Boolean,
    default: false,  //デフォルトの入力値を設定
  }
})
将输入值在数据库中设定为唯一值

email: {
    type: String,
    unique: true, //データベース上のemailの値を一意にする›
    required: true,
    trim: true,
    lowercase: true,
    validate(value){
      if(!validator.isEmail(value)){
        throw new Error ('Email is invalid') //npmパッケージ、「validator」を利用し、メールアドレスとして正しい値か確認
      }
    }
  },
bannerAds