MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Menggunakan Janji di Rute Luwak

Oke, pertama pakai mongoose Baik?

User adalah model luwak Anda yang merespons metode seperti findOne(query) , findOneAndUpdate(query, update, opts) dll..

Setelah memanggil salah satu metode ini, panggil metode exec() yang mengembalikan Query.

Kueri bukanlah Janji dan Anda harus menentukan Janji mana yang akan digunakan Mongo. Di sini saya akan merekomendasikan untuk menggunakan yang asli jadi, tambahkan baris ini di proyek Anda:

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

Sekarang, instruksi ini mengembalikan Anda Janji, bagus!

User.findOne(q).exec()

Anda sekarang dapat membuat rantai Janji dengan logika Anda, misalnya:

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

Tip:Saya sarankan untuk membuat metode aux untuk membuat kode lebih bersih:

/** @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. pengecualian mongorestore tidak tertangkap:kesalahan sintaksis

  2. Indeks jarang senyawa MongoDB

  3. MongoDB db.collection.count()

  4. Memasukkan CSV Besar ke MongoDB dengan Node.js dan async.queue

  5. Pencarian array multi-sarang Mongodb