MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Korzystanie z obietnic w trasach Mongoose

Ok, najpierw używasz mongoose prawo?

User to twój model mangusty, który odpowiada na metody takie jak findOne(query) , findOneAndUpdate(query, update, opts) itp..

Po wywołaniu dowolnej z tych metod, wywołaj metodę exec() który zwraca zapytanie.

Zapytanie nie jest dokładnie Obietnicą i musisz określić, których obietnic będzie używać Mongo. Tutaj polecam użyć natywnych, więc dodaj ten wiersz do swojego projektu:

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

Teraz ta instrukcja zwraca ci obietnicę, miło!

User.findOne(q).exec()

Możesz teraz utworzyć łańcuch obietnic ze swoją logiką, na przykład:

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

Wskazówka:proponuję utworzyć metody aux, aby kod był jeszcze bardziej przejrzysty:

/** @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 - dziwne zachowanie zstępującego indeksu

  2. Jak FILTROWAĆ dane zwrócone między dwiema datami z mongodb za pomocą agregacji:dopasowania, wyszukiwania i projektu?

  3. Wiele warunków przyłączenia za pomocą operatora $lookup

  4. Serializacja MongoDB find() powraca do nieanonimowej tablicy JSON przy użyciu PyMongo

  5. Awaria Mongodb otrzymała sygnał 15 (zakończona)