Published on

ต่อฐานข้อมูล MongoDB โดยใช้ Mongoose ORM

Authors

ต่อฐานข้อมูล MongoDB โดยใช้ Mongoose ORM

ใน Node.js ถ้าต้องการติดต่อการฐานข้อมูล MongoDB จะนิยมใช้ Mongoose ORM

Web site: http://mongoosejs.com/

Installation: $ npm install mongoose --save

การใช้งาน

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

// สร้าง Model ใช้ model('name', {field: type}) หรือจะสร้างเป็น schema ก็ได้ model('name', schema object)
var Cat = mongoose.model('Cat', { name: String })

// สร้าง object พร้อมระบุค่า
var kitty = new Cat({ name: 'Zildjian' })

// สั่งบันทึกโดยใช้ save() ถ้าไม่ส่ง callback ไปจะ return promise() มาให้
kitty.save(function (err) {
  if (err) {
    console.log(err)
  } else {
    console.log('meow')
  }
})

Schema Types

schema types สามารถระบุ type ของ field ต่างๆ ได้ และยังสามารถกำหนดค่า required, default, validations, getter, setters, field selection default สำหรับการ query ได้ ซึ่ง type ที่รองรับมีดังนี้

  • String
  • Number
  • Date
  • Buffer
  • Boolean
  • Mixed
  • Objectid
  • Array

ตัวอย่างการใช้งาน

var schema = new Schema({
  name: String,
  binary: Buffer,
  living: Boolean,
  updated: { type: Date, default: Date.now },
  age: { type: Number, min: 18, max: 65 },
  mixed: Schema.Types.Mixed,
  _someId: Schema.Types.ObjectId,
  array: [],
  ofString: [String],
  ofNumber: [Number],
  ofDates: [Date],
  ofBuffer: [Buffer],
  ofBoolean: [Boolean],
  ofMixed: [Schema.Types.Mixed],
  ofObjectId: [Schema.Types.ObjectId],
  nested: {
    stuff: { type: String, lowercase: true, trim: true },
  },
})

// example use

var Thing = mongoose.model('Thing', schema)

var m = new Thing()
m.name = 'Statue of Liberty'
m.age = 125
m.updated = new Date()
m.binary = new Buffer(0)
m.living = false
m.mixed = { any: { thing: 'i want' } }
m.markModified('mixed')
m._someId = new mongoose.Types.ObjectId()
m.array.push(1)
m.ofString.push('strings!')
m.ofNumber.unshift(1, 2, 3, 4)
m.ofDates.addToSet(new Date())
m.ofBuffer.pop()
m.ofMixed = [1, [], 'three', { four: 5 }]
m.nested.stuff = 'good'
m.save(callback)