आवेदन परिदृश्य:
कई छँटाई विधियों का समर्थन करें:] ] ]
टाइपस्क्रिप्ट कोड:
]
] यह उपयोगिता पेजिंग और छँटाई प्रक्रिया को मानकीकृत करने में मदद करती है।
कोड स्पष्टीकरण
]
] ] ]]]]]]) (वैकल्पिक),
सॉर्टऑर्डरtype ISortOrder = "asc" | "desc" | "ascending" | "descending" | 1 | -1;
export interface IPaginationFields {
page?: number;
limit?: number;
sortBy?: string | string[];
sortOrder?: ISortOrder | ISortOrder[];
sort?: Record;
}
export interface IFormatedPagination {
skip: number;
page: number;
limit: number;
sort: { [key: string]: 1 | -1 };
}
export const formatPagination = (pagination: IPaginationFields): IFormatedPagination => {
const { limit = 10, page = 1, sortBy, sortOrder, sort } = pagination;
const formattedSort: { [key: string]: 1 | -1 } = {};
const normalizeOrder = (order: string | number): 1 | -1 => {
const numOrder = Number(order);
if (!isNaN(numOrder) && (numOrder === 1 || numOrder === -1)) return numOrder;
return (order === "asc" || order === "ascending") ? 1 : -1;
};
if (sortBy) {
const sortByArray = Array.isArray(sortBy) ? sortBy : [sortBy];
const sortOrderArray = Array.isArray(sortOrder) ? sortOrder : [sortOrder];
sortByArray.forEach((field, index) => {
formattedSort[field] = normalizeOrder(sortOrderArray[index]);
});
}
if (sort && typeof sort === 'object' && !Array.isArray(sort)) {
Object.entries(sort).forEach(([field, order]) => {
formattedSort[field] = normalizeOrder(order);
});
}
if (!formattedSort.createdAt) {
formattedSort.createdAt = -1;
}
return {
skip: (page - 1) * limit,
limit: limit,
page: page,
sort: formattedSort,
};
};
] ]]]। ] यह फ़ंक्शन इनपुट पेजिंग ऑब्जेक्ट को संसाधित करता है और इसे एक मानकीकृत प्रारूप में परिवर्तित करता है।
const formatPagination = (pagination) => {
const { limit = 10, page = 1, sortBy, sortOrder, sort } = pagination;
const formattedSort = {};
const normalizeOrder = (order) => {
const numOrder = Number(order);
if (!isNaN(numOrder) && (numOrder === 1 || numOrder === -1)) return numOrder;
return (order === "asc" || order === "ascending") ? 1 : -1;
};
if (sortBy) {
const sortByArray = Array.isArray(sortBy) ? sortBy : [sortBy];
const sortOrderArray = Array.isArray(sortOrder) ? sortOrder : [sortOrder];
sortByArray.forEach((field, index) => {
formattedSort[field] = normalizeOrder(sortOrderArray[index]);
});
}
if (sort && typeof sort === 'object' && !Array.isArray(sort)) {
Object.entries(sort).forEach(([field, order]) => {
formattedSort[field] = normalizeOrder(order);
});
}
if (!formattedSort.createdAt) {
formattedSort.createdAt = -1;
}
return {
skip: (page - 1) * limit,
limit: limit,
page: page,
sort: formattedSort,
};
};
] कदम
] एक खाली ऑब्जेक्ट को आरंभ करें फॉर्मेटेड्सोर्ट
का उपयोग स्वरूपित फ़ील्ड को संग्रहीत करने के लिए किया जाता है।]
, उन्हें एक सरणी में परिवर्तित करें (यदि पहले से ही नहीं), और उन्हें
में जोड़ें का उपयोग करके
] प्रत्येक कुंजी का मान संख्यात्मक क्रम में परिवर्तित हो जाता है और
फॉर्मेटेड्सोर्ट में जोड़ा जाता है।
]
पेज 2,
सीमा: २०,
सॉर्टबी: ['नाम', 'दिनांक'],
SORTORDORD: ['ASC', 'Desc'],
सॉर्ट: {आयु: 1, स्कोर: -1},
};
const स्वरूपित = formatpagination (पेजिनेशन);
कंसोल.लॉग (स्वरूपित);
मुख्य कार्य
]
डिफ़ॉल्ट: भले ही इनपुट अधूरा हो, यह सुनिश्चित करता है कि पेजिंग ठीक से काम करता है।
]
] यह उपयोगिता उन अनुप्रयोगों के लिए आदर्श है जिनके लिए मानकीकृत पेजिंग और छंटाई की आवश्यकता होती है, जैसे कि रेस्ट एपीआई या डेटाबेस क्वेरी।
]
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3