diff --git a/src/router/trie-router/node.test.ts b/src/router/trie-router/node.test.ts index c4692c156..126417d16 100644 --- a/src/router/trie-router/node.test.ts +++ b/src/router/trie-router/node.test.ts @@ -121,6 +121,17 @@ describe('Name path', () => { expect(resB[0][0]).toEqual('resource') expect(resB[0][1]).toEqual({ id: 'b' }) }) + + it('Should return a sorted values', () => { + const node = new Node() + node.insert('get', '/resource/a', 'A') + node.insert('get', '/resource/*', 'Star') + const [res] = node.search('get', '/resource/a') + expect(res).not.toBeNull() + expect(res.length).toBe(2) + expect(res[0][0]).toEqual('A') + expect(res[1][0]).toEqual('Star') + }) }) describe('Name path - Multiple route', () => { diff --git a/src/router/trie-router/node.ts b/src/router/trie-router/node.ts index 1efe89d29..94ab4de19 100644 --- a/src/router/trie-router/node.ts +++ b/src/router/trie-router/node.ts @@ -198,10 +198,13 @@ export class Node { curNodes = tempNodes } - const results = handlerSets.sort((a, b) => { - return a.score - b.score - }) - return [results.map(({ handler, params }) => [handler, params] as [T, Params])] + if (handlerSets.length > 1) { + handlerSets.sort((a, b) => { + return a.score - b.score + }) + } + + return [handlerSets.map(({ handler, params }) => [handler, params] as [T, Params])] } }