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)