[英]How to retrieve single docs from MongoDB into javascript using mongoose?
我正在嘗試從mongodb集合中獲取單個文檔,並將該文檔用作javascript中的對象。 問題是我需要將它作為普通對象存儲在javascript中的json只有在我從response.json(doc)
調用它時才會出現,並且我無法在函數外部訪問該doc。 我發現的所有信息都令人困惑!
有可能有這樣的事情:
var a = mongoose.model('collectionName').findOne() //etc.
剛剛獲得整份文件,並將其轉化為在全球范圍內訪問的JavaScript對象,這樣我就可以從得到的屬性a
每當我請。
聽起來你對node.js回調有問題。 這不僅適用於mongoose,但您為node.js編寫的任何代碼都將如下所示:
app.get('/users', function (req, res) {
Model.find({}, function (err, docs) {
res.json(docs);
});
});
所以你只需嵌套回調,直到你擁有發送響應所需的一切。
你需要習慣這種編程風格。 一旦你對此感到滿意,你會注意到有時嵌套變得太深( 回調地獄 )。
並且有解決方案 - 將您的回調拆分為單獨的函數或使用async , promises , es6生成器 。
但首先,你需要理解“自然地”完成它的方式。
NodeJS的主要概念(因此使用MongoDB)是您正在編寫的代碼的異步性質。 您對數據庫進行的任何查詢都將與代碼的其余執行異步發生。 因此,您需要使用查詢傳遞回調函數,以便在查詢完成時,將執行回調函數。 您要分配給查詢結果的任何變量都應該在該回調中完成。
例如:
mongoose.model('collectionName').findOne( { ' some query here' }, function(err, doc) {
// set some variable to the 'doc' result if you want
// put any logic here to handle the result
});
您在回調方法中放入的任何代碼都將在查詢完成時執行。 因此,在對結果文檔執行任何操作之前,應始終檢查是否存在錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.