MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Sử dụng lời hứa trong các tuyến đường Mongoose

Được rồi, trước tiên bạn có đang sử dụng mongoose không bên phải?

User là mô hình mongoose của bạn phản hồi với các phương thức như findOne(query) , findOneAndUpdate(query, update, opts) vv ..

Sau khi gọi bất kỳ phương thức nào trong số này, hãy gọi phương thức exec() trả về một Truy vấn.

Một truy vấn không chính xác là một Lời hứa và bạn sẽ cần chỉ định Mongo sẽ sử dụng những Lời hứa nào. Ở đây tôi khuyên bạn nên sử dụng những cái gốc, hãy thêm dòng này vào dự án của bạn:

 const mongoose = require('mongoose')
 mongoose.Promise = Promise

Bây giờ, hướng dẫn này sẽ trả lại cho bạn một Lời hứa, thật tuyệt!

User.findOne(q).exec()

Bây giờ, bạn có thể tạo chuỗi Promise với logic của mình, ví dụ:

 return User
     .findOne(_id)
     .exec()
     .then((user) => {
       return Receipt
         .findOne({ bookName: user.bookName })
         .exec()
       })
     .then((receipt) => {
            // example
            return res.status(200).json(receipt)
         }))
     })

Mẹo:Tôi khuyên bạn nên tạo các phương thức aux để làm cho mã sạch hơn nữa:

/** @return {Promise} */
function findUser(id) {
  return User.findOne(id).exec()
}

/** @return {Promise} */
function findReceipt(bookName) {
  return Receipt.findOne({ bookName }).exec()
}

// example
function f(req, res) {
  const userId = req.get('id')

  return findUser(userId)
    .then((user) => findReceipt(user.bookName))
    .then((receipt) => res.status(200).json(receipt))
    .catch((err) => res.status(500).json(null))
}

// register your handler
app.get('/book', f)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $ cosh

  2. Chèn mảng đối tượng vào MongoDB

  3. Thao tác trên tài liệu MongoDB là Nguyên tử và Cô lập, nhưng Chúng có Nhất quán không?

  4. MongoDB GridFS - Đó là tên tệp hay tên tệp

  5. Tổng hợp $ facet trong monogdb