feat(MongoDB Node): Add driver info to MongoDB nodes (#18615)

This commit is contained in:
Durran Jordan
2025-09-05 15:07:09 +02:00
committed by GitHub
parent 18408bcaa1
commit 9a2d942835
5 changed files with 52 additions and 16 deletions

View File

@@ -153,8 +153,16 @@ export function stringifyObjectIDs(items: INodeExecutionData[]) {
return items;
}
export async function connectMongoClient(connectionString: string, credentials: IDataObject = {}) {
export async function connectMongoClient(
connectionString: string,
nodeVersion: number,
credentials: IDataObject = {},
) {
let client: MongoClient;
const driverInfo = {
name: 'n8n_crud',
version: nodeVersion > 0 ? nodeVersion.toString() : 'unknown',
};
if (credentials.tls) {
const ca = credentials.ca ? formatPrivateKey(credentials.ca as string) : undefined;
@@ -172,10 +180,10 @@ export async function connectMongoClient(connectionString: string, credentials:
client = await MongoClient.connect(connectionString, {
tls: true,
secureContext,
driverInfo,
});
} else {
client = await MongoClient.connect(connectionString);
client = await MongoClient.connect(connectionString, { driverInfo });
}
return client;
}

View File

@@ -75,7 +75,9 @@ export class MongoDb implements INodeType {
);
}
const client = await connectMongoClient(connectionString, credentials);
// Note: ICredentialTestFunctions doesn't have a way to get the Node instance
// so we set the version to 0
const client = await connectMongoClient(connectionString, 0, credentials);
const { databases } = await client.db().admin().listDatabases();
@@ -102,7 +104,8 @@ export class MongoDb implements INodeType {
async execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {
const credentials = await this.getCredentials('mongoDb');
const { database, connectionString } = validateAndResolveMongoCredentials(this, credentials);
const client = await connectMongoClient(connectionString, credentials);
const nodeVersion = this.getNode().typeVersion;
const client = await connectMongoClient(connectionString, nodeVersion, credentials);
let returnData: INodeExecutionData[] = [];
try {
@@ -110,7 +113,6 @@ export class MongoDb implements INodeType {
const items = this.getInputData();
const operation = this.getNodeParameter('operation', 0);
const nodeVersion = this.getNode().typeVersion;
let itemsLength = items.length ? 1 : 0;
let fallbackPairedItems: IPairedItemData[] | null = null;

View File

@@ -3,7 +3,11 @@ import { Collection, MongoClient } from 'mongodb';
import type { INodeParameters, WorkflowTestData } from 'n8n-workflow';
MongoClient.connect = async function () {
const client = new MongoClient('mongodb://localhost:27017');
const driverInfo = {
name: 'n8n_crud',
version: '1.2',
};
const client = new MongoClient('mongodb://localhost:27017', { driverInfo });
return client;
};