Các nhà xây dựng MongoClient và Db được mô tả trong manual. Khi nào bạn nên sử dụng một và khi nào bạn nên sử dụng cái kia?Trong trình điều khiển NodeJS gốc của MongoDB, khi nào nên sử dụng hàm tạo MongoClient và khi nào nên sử dụng hàm tạo Db?
Trả lời
MongoClient thường được ưu tiên, vấn đề lớn duy nhất là vấn đề mới hơn (1.2+).
Chúng ta hãy trích dẫn the manual:
MongoClient hoặc làm thế nào để kết nối một cách mới và tốt hơn
Từ phiên bản driver 1.2 chúng tôi giới thiệu một Class kết nối mới có cùng tên trên tất cả chúng ta tài xế chính thức. Điều này là để đảm bảo rằng chúng tôi trình bày một mặt trận dễ nhận biết cho tất cả các API của chúng tôi. Điều này không có nghĩa là rằng ứng dụng hiện tại của bạn sẽ bị hỏng, nhưng thay vào đó chúng tôi khuyến khích bạn sử dụng api kết nối mới để đơn giản hóa việc phát triển ứng dụng của bạn.
Hơn nữa, chúng tôi đang tạo lớp kết nối mới MongoClient thừa nhận tất cả ghi vào MongoDB, trái ngược với lớp kết nối hiện có Db đã tắt xác nhận.
Hai thay đổi lớn nhất là do đó MongoClient thừa nhận tất cả ghi vào DB và khi cơ sở dữ liệu thực được chọn trong kết nối.
Với MongoClient:
var MongoClient = require('mongodb').MongoClient
, Server = require('mongodb').Server;
var mongoClient = new MongoClient(new Server('localhost', 27017));
mongoClient.open(function(err, mongoClient) {
var db1 = mongoClient.db("mydb"); // The DB is set here
mongoClient.close();
});
vs với Db:
// db is selected in the next line, unlike with MongoClient and most drivers to other databases
var db = new Db('test', new Server('locahost', 27017));
// Establish connection to db
db.open(function(err, db) {
assert.equal(null, err);
db.on('close', test.done.bind(test));
db.close();
});