我是nodejs/expressjs和mongodb的新手。我正在嘗試創建一個將數據公開給我的移動應用程序的API,我嘗試使用Ionic框架構建它。如何將承諾返回給NodeJS/ExpressJS中的路由器回調
我有一個路線設置這樣
router.get('/api/jobs', (req, res) => {
JobModel.getAllJobsAsync().then((jobs) => res.json(jobs)); //IS THIS THe CORRECT WAY?
});
我在我的模型的函數,從MongoDB中讀取數據。我正在使用藍鳥承諾庫來轉換我的模型函數以返回承諾。
const JobModel = Promise.promisifyAll(require('../models/Job'));
我在模型
static getAllJobs(cb) {
MongoClient.connectAsync(utils.getConnectionString()).then((db) => {
const jobs = db.collection('jobs');
jobs.find().toArray((err, jobs) => {
if(err) {
return cb(err);
}
return cb(null, jobs);
});
});
}
的promisifyAll(Mymodule中)函數將這個函數返回一個承諾。
我不知道是什麼,
- 如果這是從我的模型將數據返回到路由回調函數正確的做法?
- 這是高效的嗎?
- 使用promisifyAll很慢嗎?由於它循環遍歷模塊中的所有函數,並以Async作爲後綴創建函數的副本,現在返回一個承諾。它何時實際運行?這是與節點require語句相關的更一般的問題。見下一點。
- 何時需要運行語句?當我啓動nodejs服務器?或者當我打電話給api?
看看貓鼬模塊。 – Yahya
@Yahya我研究過它。但我不想在我的文檔上執行模式。 – jerry
[Monk](https://automattic.github.io/monk/)呢? – Yahya