compare-objectId.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import mongoose from 'mongoose';
  2. type IObjectId = mongoose.Types.ObjectId;
  3. const ObjectId = mongoose.Types.ObjectId;
  4. export const isIncludesObjectId = (arr: (IObjectId | string)[], id: IObjectId | string): boolean => {
  5. const _arr = arr.map(i => i.toString());
  6. const _id = id.toString();
  7. return _arr.includes(_id);
  8. };
  9. /**
  10. * Exclude ObjectIds which exist in testIds from targetIds
  11. * @param targetIds Array of mongoose.Types.ObjectId
  12. * @param testIds Array of mongoose.Types.ObjectId
  13. * @returns Array of mongoose.Types.ObjectId
  14. */
  15. export const excludeTestIdsFromTargetIds = (targetIds: (IObjectId | string)[], testIds: (IObjectId | string)[]): IObjectId[] => {
  16. // cast to string
  17. const arr1 = targetIds.map(e => e.toString());
  18. const arr2 = testIds.map(e => e.toString());
  19. // filter
  20. const excluded = arr1.filter(e => !arr2.includes(e));
  21. // cast to ObjectId
  22. return excluded.map(e => new ObjectId(e));
  23. };
  24. export const removeDuplicates = (objectIds: (IObjectId | string)[]): IObjectId[] => {
  25. // cast to string
  26. const strs = objectIds.map(id => id.toString());
  27. const uniqueArr = Array.from(new Set(strs));
  28. // cast to ObjectId
  29. return uniqueArr.map(str => new ObjectId(str));
  30. };