File tree Expand file tree Collapse file tree 2 files changed +25
-19
lines changed Expand file tree Collapse file tree 2 files changed +25
-19
lines changed Original file line number Diff line number Diff line change 1
- const getUniqueSlug = ( service , slug , count ) => {
1
+ const getUniqueSlug = ( service , slug , count , id ) => {
2
2
return new Promise ( resolve => {
3
- const testslug = count ? slug + count : slug ;
3
+ const testSlug = count ? slug + count : slug ;
4
4
5
5
// Test if we already have data with this slug
6
+ const query = {
7
+ slug : testSlug
8
+ } ;
9
+ // ignore entry with given id (if set)
10
+ if ( id ) {
11
+ query . _id = {
12
+ $ne : id
13
+ } ;
14
+ }
6
15
service . find ( {
7
- query : {
8
- slug : testslug
9
- }
16
+ query
10
17
} ) . then ( ( result ) => {
11
- if ( result . data . length > 0 ) {
12
- count = count ? count + 1 : 1 ;
18
+ if ( result . data . length > 0 ) {
19
+ count = count ? count + 1 : 1 ;
13
20
resolve ( getUniqueSlug ( service , slug , count ) ) ;
14
21
} else {
15
- resolve ( testslug ) ;
22
+ resolve ( testSlug ) ;
16
23
}
17
24
} ) ;
18
25
} ) ;
19
26
} ;
20
27
21
- module . exports = getUniqueSlug ;
28
+ module . exports = getUniqueSlug ;
Original file line number Diff line number Diff line change 1
1
// https://www.npmjs.com/package/slug
2
2
const slug = require ( 'slug' ) ;
3
3
const getUniqueSlug = require ( '../helper/get-unique-slug' ) ;
4
- const _ = require ( 'lodash' ) ;
4
+ const { isEmpty } = require ( 'lodash' ) ;
5
5
6
6
module . exports = function ( options = { field : null , overwrite : false } ) {
7
7
return function ( hook ) {
8
- if ( ! options . field || ! hook . data [ options . field ] ) return hook ;
8
+ if ( ! options . field || ! hook . data [ options . field ] ) return hook ;
9
9
10
10
// do not overwrite existing slug
11
11
// TODO: we should make that possible and relying on ids for routing instead only on slugs
12
12
// the slug should be there for seo reasons but the id should be what counts
13
- if ( ! _ . isEmpty ( hook . data . slug ) && options . overwrite !== false ) return hook ;
13
+ if ( ! isEmpty ( hook . data . slug ) && options . overwrite !== true ) return hook ;
14
14
15
15
return new Promise ( resolve => {
16
-
17
- const titleslug = slug ( hook . data [ options . field ] , {
16
+ const titleSlug = slug ( hook . data [ options . field ] , {
18
17
lower : true
19
18
} ) ;
20
-
21
- getUniqueSlug ( hook . service , titleslug ) . then ( ( uniqueslug ) => {
22
- hook . data . slug = uniqueslug ;
23
- resolve ( hook ) ;
24
- } ) ;
19
+ getUniqueSlug ( hook . service , titleSlug , null , hook . id )
20
+ . then ( ( uniqueSlug ) => {
21
+ hook . data . slug = uniqueSlug ;
22
+ resolve ( hook ) ;
23
+ } ) ;
25
24
} ) ;
26
25
} ;
27
26
} ;
You can’t perform that action at this time.
0 commit comments