Мне не удалось найти какие-либо документы, в которых было бы плохой/хорошей идеей сохранить ссылку на коллекцию, чтобы ее можно было повторно использовать после установления соединения db.Native MongoDB Driver Node.js - мы должны хранить коллекции?
например, в нашей базе данных.ts, которая вызывается во время запуска нашего сервера. Он будет собирать коллекции и хранить их для использования в модуле, которые затем могут быть ссылками на весь проект.
пример хранения коллекции
/*database.ts*/
//module to keep 1 connection alive and allow us to have 1 instance of our collections.
import {MongoClient, Db, Collection } from 'mongodb';
let uri: string = 'connection_string';
export let db: Db;
export let usrCollection: Collection;
export let bookCollection: Collection;
export function initDb(cb: any) {
MongoClient.connect(uri, function(err, database) {
//handle err
db = database;
cb(); //returns now since db is assigned.
});
}
export function initCollections() {
usrCollection = db.collection('users'); //non-async
bookCollection = db.collection('book'); //non-async
}
/*app.ts*/
//in our express app when it start up
import {db, initCollections, initDb} from './database';
initDb(function() {
//this will hold up our server from starting BUT
//there is no reason to make it async.
initCollections();
});
что некоторые из короткой пришествии этой модели/строить? что я могу улучшить и чего я должен избегать для производительности, особенно если вы управляете коллекциями. Может ли этот шаблон сохранить ошибку исходного кода или легко найти ошибки и расширять их в будущем? или есть даже лучший шаблон - пожалуйста, не удаляйте библиотеку, кроме встроенного драйвера mongodb для решений node.js, таких как mongoose.
но сохраните ли вы коллекцию для повторного использования? или снова в каждой функции вам нужно будет захватить обработчик для конкретной коллекции? увидев пример, который вы поделили, он постоянно вызывает метод db.collection, а не сохраняет его один раз в частном порядке и используя его. Я просто понял, что обнародовать коллекции - тоже ужасная идея, но внутренне в модуле было бы/нужно ли хранить ссылку на коллекцию? – Andrei
Да, я буду хранить коллекции. Причина заключается не в эффективности, а в уменьшении ошибок, вызванных опечаткой в строке («пользователи» <=> «пользователь»). @AndreiM. – Zen