Find mongoose - sử dụng async await thay thế cho callback

Nội dung bài viết

Mongodb nodejs nếu như bạn đã làm qua rồi thì không thể bỏ qua mongoose, một thư viện ODM cho mongodb và nodejs. Trong ví dụ hôm nay chúng ta sẽ thử tìm hiểu về query mongodb sử dụng Mongoose.

Mongoose là gì?

Mongoose là một thư viện Object Data Modeling (ODM)  cho MongoDB và Node.js. Mongoose quản lý các mối quan hệ dữ liệu giữa những collections , cung cấp schema validation và được sử dụng để translate giữa các đối tượng trong ứng dụng bao gồm code chúng ta.

Tất nhiên, nhưng ai đọc bài này đừng hy vọng là sẽ am hiểu hết về mongoose, vì những ví dụ dưới đây tương đối dễ, nhưng ai đã từng làm về Database, nhất là về những db liên quan đến network hay đến hệ thống quản lý CRM thì tôi cá là những người đó mới thấu hiểu việc triển khai và configs cho Mongodb thì khó đế mức nào? Ví dụ như Replica mongodb...

Và bài này chúng ta làm quen nhẹ nhẹ thôi, và trong bài viết này thử tìm hiểu về cách query mongodb sử dụng thông qua thư viện Mongoose, giờ thì chơi thôi.

find mongoosee

Find Mongoose

Cú pháp Model.find() trong Mongoose

Parameters
filter «Object|ObjectId»
[projection] «Object|String» return về fields nào chúng ta cần trả cho clients tìm hiểu thêm: Query.prototype.select()
[options] «Object» Dạng như là offset. limit, hay sort vậy tìm hiểu thêm: Query.prototype.setOptions()
[callback] «Function» callback, cái này thôi khỏi bàn, nhiều bài nói về callback rồi. Đọc lại thì đây, tìm cho luôn nè.

Tips: Tìm hiểu về async/await trong ES7

Ngoài ra còn rất nhiều phương thức find mongoose khác như:

  • Model.find()
  • Model.findById()
  • Model.findByIdAndDelete()
  • Model.findByIdAndRemove()
  • Model.findByIdAndUpdate()
  • Model.findOne()
  • Model.findOneAndDelete()
  • Model.findOneAndRemove()
  • Model.findOneAndReplace()
  • Model.findOneAndUpdate()

Trước tiên bạn phải có một Model, hic để tạo Model thì cũng phải giải thích thêm nữa, khổ thật chứ... Thôi lỡ rồi viết luôn, Giờ thử giả vờ tạo một project trong Express

1 - Create config.js

module.exports = {
    dbs: 'mongodb://127.0.0.1:27017/dbs'
}

2 - Create person.js

const mongoose = require('mongoose')
const personSchema =new mongoose.Schema({
    name:String,
    age:Number
})
module.exports=mongoose.model('Perosn',personSchema)

3 - Create app.js

const mongoose = require('mongoose')
const dbConfig = require('./dbs/config')
mongoose.connect(dbConfig.dbs, {
  useNewUrlParser: true
})

Ok xong, ta đã connect mongodb trong file app.js

Giờ đi vào phần chính thôi

//Khai báo Model person
const person_model = require('person')

With Callbacks

/* 
Lấy những records có name là anonystick, và chỉ get ra 2 fileds đó là name and age, bỏ qua 10 records đầu tiên Tìm 
name = anonystick 
projection = 'name age' chỉ return ra 2 filed này options = { skip: 10 } bỏ qua 10 records trước callback = function (err, docs) 
*/
person_model.find({ name:  'anonystick' }, 'name age', { skip: 10 }, function (err, docs) {});

With async/await

const obj = await person_model.find({ name:  'anonystick' }, 'name age').(skip: 10))

Tips: Nếu bạn sử dụng find({_id: id}) thì nên sử dụng findOne({_id: id}) sẽ tốt hơn, ngoài performance thì khi sử dụng findOne({_id: id}) thì sẽ return về Object thay vò array phương pháp cũ.

Xong, như tiêu đề việc học sử dụng Mongodb không phải qua một bài viết hay qua một khoá học, mà bạn phải trải qua nhiều dự án, đúc kết được nhiều kinh nghiệm, và ngoài ra bạn nên đọc những bài viết như thế này để không những giải quyết nhanh gọn lẹ với ES7. Chứ không biết giờ vấn callbacks thì bỏ mẹ kakakaka.

Thanks for Reading!

Top bài viết