mongoose: Schema与Model

前端js操作mongodb用到了mongoose
使用前先安装

$ npm install mongoose

配置连接数据库(官网示例)

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');

连接失败/成功的回调

var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function (callback) {
// 略
});

当然在实际项目中,我们可以对数据库的连接做一些自定义设置

export const mongooseOcr = mongoose.createConnection('mongodb://localhost/test', {
  useNewUrlParser: true,
  autoReconnect: true,
  poolSize: 10,
  keepAlive: 1,
  connectTimeoutMS: 30000,
  reconnectTries: Number.MAX_VALUE,
  reconnectInterval: 2000,
})

连接之后,这里介绍一下Schema和Model

  • Schema: 在 Mongoose 中,所有数据都由一个 Schema 开始创建。每一个 schema 都映射到一个 Mongodb 的集合(collection),并定义了该集合(collection)中的文档(document)的形式。
    相当于声明表结构信息,不能操作数据库

  • Model: 由Schema发布生成的模型,具有抽象属性
    A model is a class with which we construct documents. In this case, each document will be a instance of this class with properties and behaviors as declared in our schema.
    如:

import mongoose, { mongooseOcr } from '../../../mongodb'

const { Schema } = mongoose
export const OcrImgSchema = new Schema({
  uid: { type: String, require: true, trim: true },
  record_id: { type: String, require: true, trim: true },
  content_data_uid: { type: String, require: true, trim: true },
  type: { type: String, trim: true },
  name: { type: String, trim: true },
  field_uid: { type: String, trim: true },
  url: { type: String, require: true, trim: true },
  status: { type: Number, require: true, default: 0 }, 
  reason: { type: String, trim: true },
  createtime: { type: Date, default: Date.now, require: true },
  updatetime: { type: Date, default: Date.now, require: true },
  data: Schema.Types.Mixed,
  ignore: { type: Boolean, default: false },
}, { timestamps: { createdAt: 'createtime', updatedAt: 'updatetime' } })
export default mongooseOcr.model('Ocr_Img', OcrImgSchema)

ps:model第一个参数如果不带s,影射到数据库里的collection名称会带上s

Schema 中的每一个键都定义了一个文档(document)的一个属性。属性类型有:String、Number、Date、Buffer、Boolean、Mixed、ObjectId、Array

Documents are instances of model.

var schema = new mongoose.Schema({ name: 'string', size: 'string' });
var Tank = mongoose.model('Tank', schema);
// Constructing documents
var small = new Tank({ size: 'small' });
small.save(function (err) {
  if (err) return handleError(err);
  // saved略
})

你可能感兴趣的:(mongoose: Schema与Model)