簡體   English   中英

Node.js中的Mongodb集合對象緩存

[英]Mongodb collection object caching in Node.js

我正在嘗試在Node.js中實現對MongoDB數據庫的RESTful(ish)接口。 根據文檔 ,基本成語是這樣的:

var mongo = require('mongodb'),
  Server = mongo.Server,
  Db = mongo.Db;

var server = new Server('localhost', 27017, {auto_reconnect: true});
var db = new Db('exampleDb', server);

db.open(function(err, db) {
     if(!err) {
        db.collection('test', function(err, collection) {
            // do stuff with collection
        });
     }
});

因此,基本的數據庫訪問涉及三個對象(服務器,數據庫和集合)。 我的問題是其中哪些可以/應該在啟動時加載並緩存在某個地方以供每個http請求重用,以及哪些/必須在每個請求中重新創建。 我的假設是服務器和數據庫對象可以長期存在是可以的,但是我對收集對象不太確定。

此類收集可能是長期存在的,尤其是在服務器無法運行的情況下,如果有大量這樣的收集。 這只是您正在使用的內存。

為什么不呢? 集合對象本身不占用太多內存,它提供了與mongodb交互,查詢,保存等所有功能。 在每個請求上重新創建它,然后再將其刪除是沒有意義的。

通常,從open進行的回調應該啟動邏輯來啟動應用程序/服務器的其余部分。 然后,您只需保留該數據庫引用,並根據每個請求調用db.collection。 我通常可以提供一項服務,可以調用該服務從REST資源獲取數據庫引用,以保持一切清潔。 同樣,這可能取決於應用程序中的數據庫/集合用法。

保存所有三件事(服務器連接,數據庫和集合),然后啟動您的應用程序。 Mongoose之類的 MongoDB ODM會自己做,以防萬一。 您可能想使用異步來避免將代碼嵌套得太深。

就個人而言,我使用mongo-lite來完成var db = require('mongo-lite').connect('mongodb://localhost/exampleDb', ['test']); 之后,我可以擺弄我的收藏集db.test。 這為我節省了很多樣板。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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