簡體   English   中英

如何使用mongoose從MongoDB中檢索單個文檔到javascript?

[英]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);
    });
});

所以你只需嵌套回調,直到你擁有發送響應所需的一切。

你需要習慣這種編程風格。 一旦你對此感到滿意,你會注意到有時嵌套變得太深( 回調地獄 )。

並且有解決方案 - 將您的回調拆分為單獨的函數或使用asyncpromiseses6生成器

但首先,你需要理解“自然地”完成它的方式。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM