mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 10:02:05 +00:00
⚡ Add "Date Fields" parameter to the insert & update operations
MongoDB
This commit is contained in:
@@ -1,14 +1,26 @@
|
||||
import { IExecuteFunctions } from 'n8n-core';
|
||||
import {
|
||||
IExecuteFunctions,
|
||||
} from 'n8n-core';
|
||||
|
||||
import {
|
||||
IDataObject,
|
||||
INodeExecutionData,
|
||||
INodeType,
|
||||
INodeTypeDescription
|
||||
} from 'n8n-workflow';
|
||||
import { nodeDescription } from './mongo.node.options';
|
||||
import { MongoClient } from 'mongodb';
|
||||
|
||||
import {
|
||||
nodeDescription,
|
||||
} from './mongo.node.options';
|
||||
|
||||
import {
|
||||
MongoClient,
|
||||
ObjectID,
|
||||
} from 'mongodb';
|
||||
|
||||
import {
|
||||
getItemCopy,
|
||||
handleDateFields,
|
||||
validateAndResolveMongoCredentials
|
||||
} from './mongo.node.utils';
|
||||
|
||||
@@ -65,8 +77,13 @@ export class MongoDb implements INodeType {
|
||||
.map(f => f.trim())
|
||||
.filter(f => !!f);
|
||||
|
||||
const options = this.getNodeParameter('options', 0) as IDataObject;
|
||||
const insertItems = getItemCopy(items, fields);
|
||||
|
||||
if (options.dateFields) {
|
||||
handleDateFields(insertItems, options.dateFields as string);
|
||||
}
|
||||
|
||||
const { insertedIds } = await mdb
|
||||
.collection(this.getNodeParameter('collection', 0) as string)
|
||||
.insertMany(insertItems);
|
||||
@@ -90,6 +107,8 @@ export class MongoDb implements INodeType {
|
||||
.map(f => f.trim())
|
||||
.filter(f => !!f);
|
||||
|
||||
const options = this.getNodeParameter('options', 0) as IDataObject;
|
||||
|
||||
let updateKey = this.getNodeParameter('updateKey', 0) as string;
|
||||
updateKey = updateKey.trim();
|
||||
|
||||
@@ -100,19 +119,25 @@ export class MongoDb implements INodeType {
|
||||
// Prepare the data to update and copy it to be returned
|
||||
const updateItems = getItemCopy(items, fields);
|
||||
|
||||
if (options.dateFields) {
|
||||
handleDateFields(updateItems, options.dateFields as string);
|
||||
}
|
||||
|
||||
for (const item of updateItems) {
|
||||
if (item[updateKey] === undefined) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const filter: { [key: string]: string } = {};
|
||||
const filter: { [key: string]: string | ObjectID } = {};
|
||||
filter[updateKey] = item[updateKey] as string;
|
||||
|
||||
if (updateKey === '_id') {
|
||||
filter[updateKey] = new ObjectID(filter[updateKey]);
|
||||
delete item['_id'];
|
||||
}
|
||||
await mdb
|
||||
.collection(this.getNodeParameter('collection', 0) as string)
|
||||
.updateOne(filter, { $set: item });
|
||||
}
|
||||
|
||||
returnItems = this.helpers.returnJsonArray(updateItems as IDataObject[]);
|
||||
} else {
|
||||
throw new Error(`The operation "${operation}" is not supported!`);
|
||||
|
||||
Reference in New Issue
Block a user