2017-02-28 68 views
0

首先,別擔心,它是一個很小的數據集 - 我意識到通過API將整個生產數據庫轉儲到單個屏幕並不明智...我只需要通過Node.js應用程序中的API端點獲取整個(小)DB的JSON轉儲。在Node.js中顯示完整的MongoDB內容API

我的應用程序使用此代碼併成功返回單記錄:

MongoClient.connect("mongodb://localhost:27017/search", function (err, db) { 

    if(err) throw err; 

    db.collection('results', function(err, collection) { 
     // search for match that "begins with" searchterm 
     collection.findOne({'string':new RegExp('^' + searchterm, 'i')}, function(err, items){ 
      // get result 
      var result; 
      if (items == null || items.result == null){ 
       result = ""; 
      } 
      else { 
       result = items.result; 
      } 
      // return result 
      res.send(result); 
     }); 
    }); 
}); 

所以我知道節點成功地交談蒙戈,但我該如何調整這個查詢/代碼基本上返回時,你執行得什麼MongoDB命令行上的以下內容:

$ db.results.find() 

回答

0

感謝球員們,我感謝你的回答,指出我在正確的方向,就使用{}作爲查詢而言。下面是最終爲我工作的代碼:

db.collection('results', function(err, collection) { 
    collection.find({}).toArray(function(err, docs) { 
     res.send(docs); 
    }); 
}); 

的關鍵要素作爲指定者(...)一部分。

+0

我很好奇你爲什麼需要加上'toArray'。介意分享您使用的MongoDB/Mongoose的版本? –

+0

我說實話,我不知道貓鼬是什麼。我在Mac OS X Sierra上運行MongoDB v3.2.0。我習慣了陣列(...),因爲經過大量的隨機試驗和錯誤,這是第一件有效的工作。如果你建議一個正確的選擇,我會給出一個去。 – HomerPlata

+0

Mongoose是一個用於JavaScript/Node.js的MongoDB包裝器,可以將東西抽象成更易於維護和可讀的代碼。我認爲這就是爲什麼我建議的解決方案不起作用。 Mongoose可能正是你所做的:'toArray()'在內部。 –

2

這是代碼段。

model.find({}).exec(function (err, result) { 
     if (err) {console.error(err); return;} 
     else return result; 
    }); 

首先使用您的預定義模型並調用find。邏輯是放置一個空對象{}實質上呈現。從這個模型中選擇全部。

有意義嗎?

+0

我也推薦使用promises和mongodb。最好是藍鳥。 – Remario

1

正如你所描述的那樣。

collection.find({}).exec((err, result) => { 
    if (err) { 
    console.log(err); 
    return; 
    } 
    if (result.length > 0) { 
    // We check that the length is > 0 because using .find() will always 
    // return an array, even an empty one. So just checking if it exists 
    // will yield a false positive 
    res.send(result); 
    // Could also just use `return result;` 
});