@feathersjs/mongodb 5.0.0-pre.20 → 5.0.0-pre.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/lib/adapter.d.ts +1 -1
- package/lib/adapter.js +22 -13
- package/lib/adapter.js.map +1 -1
- package/lib/error-handler.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/package.json +10 -10
- package/src/adapter.ts +105 -63
- package/src/error-handler.ts +1 -1
- package/src/index.ts +18 -16
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,33 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [5.0.0-pre.23](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.22...v5.0.0-pre.23) (2022-06-06)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @feathersjs/mongodb
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# [5.0.0-pre.22](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.21...v5.0.0-pre.22) (2022-05-24)
|
|
15
|
+
|
|
16
|
+
**Note:** Version bump only for package @feathersjs/mongodb
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# [5.0.0-pre.21](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.20...v5.0.0-pre.21) (2022-05-23)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Bug Fixes
|
|
26
|
+
|
|
27
|
+
* **typescript:** Make additional types generic to work with extended types ([#2625](https://github.com/feathersjs/feathers/issues/2625)) ([269fdec](https://github.com/feathersjs/feathers/commit/269fdecc5961092dc8608b3cbe16f433c80bfa96))
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
6
33
|
# [5.0.0-pre.20](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.19...v5.0.0-pre.20) (2022-05-04)
|
|
7
34
|
|
|
8
35
|
|
package/lib/adapter.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export interface MongoDBAdapterOptions extends AdapterServiceOptions {
|
|
|
9
9
|
export interface MongoDBAdapterParams<Q = AdapterQuery> extends AdapterParams<Q, Partial<MongoDBAdapterOptions>> {
|
|
10
10
|
mongodb?: BulkWriteOptions | FindOptions | InsertOneOptions | DeleteOptions | CountDocumentsOptions | ReplaceOptions;
|
|
11
11
|
}
|
|
12
|
-
export declare class MongoDbAdapter<T, D = Partial<T>, P extends MongoDBAdapterParams = MongoDBAdapterParams> extends AdapterBase<T, D, P, MongoDBAdapterOptions> {
|
|
12
|
+
export declare class MongoDbAdapter<T, D = Partial<T>, P extends MongoDBAdapterParams<any> = MongoDBAdapterParams> extends AdapterBase<T, D, P, MongoDBAdapterOptions> {
|
|
13
13
|
constructor(options: MongoDBAdapterOptions);
|
|
14
14
|
getObjectId(id: Id | ObjectId): ObjectId | Id;
|
|
15
15
|
filterQuery(id: NullableId, params: P): {
|
package/lib/adapter.js
CHANGED
|
@@ -29,7 +29,9 @@ class MongoDbAdapter extends adapter_commons_1.AdapterBase {
|
|
|
29
29
|
filterQuery(id, params) {
|
|
30
30
|
const { $select, $sort, $limit, $skip, ...query } = (params.query || {});
|
|
31
31
|
if (id !== null) {
|
|
32
|
-
query.$and = (query.$and || []).concat({
|
|
32
|
+
query.$and = (query.$and || []).concat({
|
|
33
|
+
[this.id]: this.getObjectId(id)
|
|
34
|
+
});
|
|
33
35
|
}
|
|
34
36
|
if (query[this.id]) {
|
|
35
37
|
query[this.id] = this.getObjectId(query[this.id]);
|
|
@@ -70,18 +72,21 @@ class MongoDbAdapter extends adapter_commons_1.AdapterBase {
|
|
|
70
72
|
async $get(id, params = {}) {
|
|
71
73
|
const { Model } = this.getOptions(params);
|
|
72
74
|
const { query, filters: { $select } } = this.filterQuery(id, params);
|
|
73
|
-
const projection = $select
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
const projection = $select
|
|
76
|
+
? {
|
|
77
|
+
projection: {
|
|
78
|
+
...this.getSelect($select),
|
|
79
|
+
[this.id]: 1
|
|
80
|
+
}
|
|
77
81
|
}
|
|
78
|
-
|
|
82
|
+
: {};
|
|
79
83
|
const findOptions = {
|
|
80
84
|
...params.mongodb,
|
|
81
85
|
...projection
|
|
82
86
|
};
|
|
83
|
-
return Promise.resolve(Model)
|
|
84
|
-
.then(
|
|
87
|
+
return Promise.resolve(Model)
|
|
88
|
+
.then((model) => model.findOne(query, findOptions))
|
|
89
|
+
.then((data) => {
|
|
85
90
|
if (data == null) {
|
|
86
91
|
throw new errors_1.NotFound(`No record found for id '${id}'`);
|
|
87
92
|
}
|
|
@@ -114,12 +119,12 @@ class MongoDbAdapter extends adapter_commons_1.AdapterBase {
|
|
|
114
119
|
data: filters.$limit === 0 ? [] : (await q.toArray())
|
|
115
120
|
});
|
|
116
121
|
if (paginate && paginate.default) {
|
|
117
|
-
if (useEstimatedDocumentCount &&
|
|
122
|
+
if (useEstimatedDocumentCount && typeof model.estimatedDocumentCount === 'function') {
|
|
118
123
|
return model.estimatedDocumentCount().then(runQuery);
|
|
119
124
|
}
|
|
120
125
|
return model.countDocuments(query, findOptions).then(runQuery);
|
|
121
126
|
}
|
|
122
|
-
return runQuery(0).then(page => page.data);
|
|
127
|
+
return runQuery(0).then((page) => page.data);
|
|
123
128
|
}
|
|
124
129
|
async $create(data, params = {}) {
|
|
125
130
|
const writeOptions = params.mongodb;
|
|
@@ -137,8 +142,12 @@ class MongoDbAdapter extends adapter_commons_1.AdapterBase {
|
|
|
137
142
|
return entry;
|
|
138
143
|
};
|
|
139
144
|
const promise = Array.isArray(data)
|
|
140
|
-
? model
|
|
141
|
-
|
|
145
|
+
? model
|
|
146
|
+
.insertMany(data.map(setId), writeOptions)
|
|
147
|
+
.then(async (result) => Promise.all(Object.values(result.insertedIds).map(async (_id) => model.findOne({ _id }))))
|
|
148
|
+
: model
|
|
149
|
+
.insertOne(setId(data), writeOptions)
|
|
150
|
+
.then(async (result) => model.findOne({ _id: result.insertedId }));
|
|
142
151
|
return promise.then((0, adapter_commons_1.select)(params, this.id)).catch(error_handler_1.errorHandler);
|
|
143
152
|
}
|
|
144
153
|
async $patch(id, _data, params = {}) {
|
|
@@ -168,7 +177,7 @@ class MongoDbAdapter extends adapter_commons_1.AdapterBase {
|
|
|
168
177
|
},
|
|
169
178
|
paginate: false
|
|
170
179
|
});
|
|
171
|
-
const items =
|
|
180
|
+
const items = Array.isArray(originalIds) ? originalIds : [originalIds];
|
|
172
181
|
const idList = items.map((item) => item[this.id]);
|
|
173
182
|
const findParams = {
|
|
174
183
|
...params,
|
package/lib/adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|
package/lib/error-handler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../src/error-handler.ts"],"names":[],"mappings":";;;AAAA,+CAAiD;AAGjD,SAAgB,YAAY,
|
|
1
|
+
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../src/error-handler.ts"],"names":[],"mappings":";;;AAAA,+CAAiD;AAGjD,SAAgB,YAAY,CAAC,KAAiB;IAC5C,kEAAkE;IAClE,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QACzD,MAAM,IAAI,qBAAY,CAAC,KAAK,EAAE;YAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,CAAC,CAAA;KACH;IAED,MAAM,KAAK,CAAA;AACb,CAAC;AAVD,oCAUC"}
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,uCAAgE;AAEhE,4CAAyB;AACzB,kDAA+B;AAE/B,MAAa,cACX,SAAQ,wBAAuB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,uCAAgE;AAEhE,4CAAyB;AACzB,kDAA+B;AAE/B,MAAa,cACX,SAAQ,wBAAuB;IAM/B,KAAK,CAAC,IAAI,CAAC,MAAU;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAQ,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAM,EAAE,MAAU;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IAC9B,CAAC;IAID,KAAK,CAAC,MAAM,CAAC,IAA+B,EAAE,MAAU;QACtD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAM,EAAE,IAAO,EAAE,MAAU;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IACvC,CAAC;IAID,KAAK,CAAC,KAAK,CAAC,EAAc,EAAE,IAAgB,EAAE,MAAU;QACtD,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IACtC,CAAC;IAID,KAAK,CAAC,MAAM,CAAC,EAAc,EAAE,MAAU;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IACjC,CAAC;CACF;AApCD,wCAoCC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@feathersjs/mongodb",
|
|
3
3
|
"description": "Feathers MongoDB service adapter",
|
|
4
|
-
"version": "5.0.0-pre.
|
|
4
|
+
"version": "5.0.0-pre.23",
|
|
5
5
|
"homepage": "https://feathersjs.com",
|
|
6
6
|
"main": "lib/",
|
|
7
7
|
"keywords": [
|
|
@@ -50,22 +50,22 @@
|
|
|
50
50
|
"access": "public"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@feathersjs/adapter-commons": "^5.0.0-pre.
|
|
54
|
-
"@feathersjs/commons": "^5.0.0-pre.
|
|
55
|
-
"@feathersjs/errors": "^5.0.0-pre.
|
|
56
|
-
"@feathersjs/feathers": "^5.0.0-pre.
|
|
53
|
+
"@feathersjs/adapter-commons": "^5.0.0-pre.23",
|
|
54
|
+
"@feathersjs/commons": "^5.0.0-pre.23",
|
|
55
|
+
"@feathersjs/errors": "^5.0.0-pre.23",
|
|
56
|
+
"@feathersjs/feathers": "^5.0.0-pre.23"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
59
|
"mongodb": "^4.5.0"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
|
-
"@feathersjs/adapter-tests": "^5.0.0-pre.
|
|
62
|
+
"@feathersjs/adapter-tests": "^5.0.0-pre.23",
|
|
63
63
|
"@types/mocha": "^9.1.1",
|
|
64
|
-
"@types/node": "^17.0.
|
|
64
|
+
"@types/node": "^17.0.40",
|
|
65
65
|
"mocha": "^10.0.0",
|
|
66
|
-
"mongodb-memory-server": "^8.
|
|
66
|
+
"mongodb-memory-server": "^8.6.0",
|
|
67
67
|
"shx": "^0.3.4",
|
|
68
|
-
"typescript": "^4.
|
|
68
|
+
"typescript": "^4.7.3"
|
|
69
69
|
},
|
|
70
|
-
"gitHead": "
|
|
70
|
+
"gitHead": "a60910bd730b88053ca6648337095f1ca1e3b39f"
|
|
71
71
|
}
|
package/src/adapter.ts
CHANGED
|
@@ -1,27 +1,50 @@
|
|
|
1
1
|
import {
|
|
2
|
-
ObjectId,
|
|
3
|
-
|
|
2
|
+
ObjectId,
|
|
3
|
+
Collection,
|
|
4
|
+
FindOptions,
|
|
5
|
+
BulkWriteOptions,
|
|
6
|
+
InsertOneOptions,
|
|
7
|
+
DeleteOptions,
|
|
8
|
+
CountDocumentsOptions,
|
|
9
|
+
ReplaceOptions
|
|
4
10
|
} from 'mongodb'
|
|
5
11
|
import { NotFound } from '@feathersjs/errors'
|
|
6
12
|
import { _ } from '@feathersjs/commons'
|
|
7
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
AdapterBase,
|
|
15
|
+
select,
|
|
16
|
+
AdapterParams,
|
|
17
|
+
AdapterServiceOptions,
|
|
18
|
+
PaginationOptions,
|
|
19
|
+
AdapterQuery
|
|
20
|
+
} from '@feathersjs/adapter-commons'
|
|
8
21
|
import { NullableId, Id, Paginated } from '@feathersjs/feathers'
|
|
9
22
|
import { errorHandler } from './error-handler'
|
|
10
23
|
|
|
11
24
|
export interface MongoDBAdapterOptions extends AdapterServiceOptions {
|
|
12
|
-
Model: Collection|Promise<Collection
|
|
13
|
-
disableObjectify?: boolean
|
|
25
|
+
Model: Collection | Promise<Collection>
|
|
26
|
+
disableObjectify?: boolean
|
|
14
27
|
useEstimatedDocumentCount?: boolean
|
|
15
28
|
}
|
|
16
29
|
|
|
17
|
-
export interface MongoDBAdapterParams<Q = AdapterQuery>
|
|
18
|
-
|
|
30
|
+
export interface MongoDBAdapterParams<Q = AdapterQuery>
|
|
31
|
+
extends AdapterParams<Q, Partial<MongoDBAdapterOptions>> {
|
|
32
|
+
mongodb?:
|
|
33
|
+
| BulkWriteOptions
|
|
34
|
+
| FindOptions
|
|
35
|
+
| InsertOneOptions
|
|
36
|
+
| DeleteOptions
|
|
37
|
+
| CountDocumentsOptions
|
|
38
|
+
| ReplaceOptions
|
|
19
39
|
}
|
|
20
40
|
|
|
21
41
|
// Create the service.
|
|
22
|
-
export class MongoDbAdapter<
|
|
23
|
-
|
|
24
|
-
|
|
42
|
+
export class MongoDbAdapter<
|
|
43
|
+
T,
|
|
44
|
+
D = Partial<T>,
|
|
45
|
+
P extends MongoDBAdapterParams<any> = MongoDBAdapterParams
|
|
46
|
+
> extends AdapterBase<T, D, P, MongoDBAdapterOptions> {
|
|
47
|
+
constructor(options: MongoDBAdapterOptions) {
|
|
25
48
|
if (!options) {
|
|
26
49
|
throw new Error('MongoDB options have to be provided')
|
|
27
50
|
}
|
|
@@ -32,7 +55,7 @@ export class MongoDbAdapter<T, D = Partial<T>, P extends MongoDBAdapterParams =
|
|
|
32
55
|
})
|
|
33
56
|
}
|
|
34
57
|
|
|
35
|
-
getObjectId
|
|
58
|
+
getObjectId(id: Id | ObjectId) {
|
|
36
59
|
if (this.options.disableObjectify) {
|
|
37
60
|
return id
|
|
38
61
|
}
|
|
@@ -44,11 +67,13 @@ export class MongoDbAdapter<T, D = Partial<T>, P extends MongoDBAdapterParams =
|
|
|
44
67
|
return id
|
|
45
68
|
}
|
|
46
69
|
|
|
47
|
-
filterQuery
|
|
48
|
-
const { $select, $sort, $limit, $skip, ...query } = (params.query || {}) as AdapterQuery
|
|
70
|
+
filterQuery(id: NullableId, params: P) {
|
|
71
|
+
const { $select, $sort, $limit, $skip, ...query } = (params.query || {}) as AdapterQuery
|
|
49
72
|
|
|
50
73
|
if (id !== null) {
|
|
51
|
-
query.$and = (query.$and || []).concat({
|
|
74
|
+
query.$and = (query.$and || []).concat({
|
|
75
|
+
[this.id]: this.getObjectId(id)
|
|
76
|
+
})
|
|
52
77
|
}
|
|
53
78
|
|
|
54
79
|
if (query[this.id]) {
|
|
@@ -61,22 +86,25 @@ export class MongoDbAdapter<T, D = Partial<T>, P extends MongoDBAdapterParams =
|
|
|
61
86
|
}
|
|
62
87
|
}
|
|
63
88
|
|
|
64
|
-
getSelect
|
|
89
|
+
getSelect(select: string[] | { [key: string]: number }) {
|
|
65
90
|
if (Array.isArray(select)) {
|
|
66
|
-
return select.reduce<{ [key: string]: number }>(
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
91
|
+
return select.reduce<{ [key: string]: number }>(
|
|
92
|
+
(value, name) => ({
|
|
93
|
+
...value,
|
|
94
|
+
[name]: 1
|
|
95
|
+
}),
|
|
96
|
+
{}
|
|
97
|
+
)
|
|
70
98
|
}
|
|
71
99
|
|
|
72
100
|
return select
|
|
73
101
|
}
|
|
74
102
|
|
|
75
|
-
async $findOrGet
|
|
103
|
+
async $findOrGet(id: NullableId, params: P) {
|
|
76
104
|
return id === null ? await this.$find(params) : await this.$get(id, params)
|
|
77
105
|
}
|
|
78
106
|
|
|
79
|
-
normalizeId
|
|
107
|
+
normalizeId(id: NullableId, data: Partial<D>): Partial<D> {
|
|
80
108
|
if (this.id === '_id') {
|
|
81
109
|
// Default Mongo IDs cannot be updated. The Mongo library handles
|
|
82
110
|
// this automatically.
|
|
@@ -92,22 +120,28 @@ export class MongoDbAdapter<T, D = Partial<T>, P extends MongoDBAdapterParams =
|
|
|
92
120
|
return data
|
|
93
121
|
}
|
|
94
122
|
|
|
95
|
-
async $get
|
|
96
|
-
const { Model } = this.getOptions(params)
|
|
97
|
-
const {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
123
|
+
async $get(id: Id, params: P = {} as P): Promise<T> {
|
|
124
|
+
const { Model } = this.getOptions(params)
|
|
125
|
+
const {
|
|
126
|
+
query,
|
|
127
|
+
filters: { $select }
|
|
128
|
+
} = this.filterQuery(id, params)
|
|
129
|
+
const projection = $select
|
|
130
|
+
? {
|
|
131
|
+
projection: {
|
|
132
|
+
...this.getSelect($select),
|
|
133
|
+
[this.id]: 1
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
: {}
|
|
104
137
|
const findOptions: FindOptions = {
|
|
105
138
|
...params.mongodb,
|
|
106
139
|
...projection
|
|
107
140
|
}
|
|
108
141
|
|
|
109
|
-
return Promise.resolve(Model)
|
|
110
|
-
.then(
|
|
142
|
+
return Promise.resolve(Model)
|
|
143
|
+
.then((model) => model.findOne(query, findOptions))
|
|
144
|
+
.then((data) => {
|
|
111
145
|
if (data == null) {
|
|
112
146
|
throw new NotFound(`No record found for id '${id}'`)
|
|
113
147
|
}
|
|
@@ -117,10 +151,10 @@ export class MongoDbAdapter<T, D = Partial<T>, P extends MongoDBAdapterParams =
|
|
|
117
151
|
.catch(errorHandler)
|
|
118
152
|
}
|
|
119
153
|
|
|
120
|
-
async $find
|
|
121
|
-
async $find
|
|
122
|
-
async $find
|
|
123
|
-
async $find
|
|
154
|
+
async $find(params?: P & { paginate?: PaginationOptions }): Promise<Paginated<T>>
|
|
155
|
+
async $find(params?: P & { paginate: false }): Promise<T[]>
|
|
156
|
+
async $find(params?: P): Promise<Paginated<T> | T[]>
|
|
157
|
+
async $find(params: P = {} as P): Promise<Paginated<T> | T[]> {
|
|
124
158
|
const { filters, query } = this.filterQuery(null, params)
|
|
125
159
|
const { paginate, Model, useEstimatedDocumentCount } = this.getOptions(params)
|
|
126
160
|
const findOptions = { ...params.mongodb }
|
|
@@ -147,24 +181,24 @@ export class MongoDbAdapter<T, D = Partial<T>, P extends MongoDBAdapterParams =
|
|
|
147
181
|
total,
|
|
148
182
|
limit: filters.$limit,
|
|
149
183
|
skip: filters.$skip || 0,
|
|
150
|
-
data: filters.$limit === 0 ? [] : (await q.toArray()) as any as T[]
|
|
184
|
+
data: filters.$limit === 0 ? [] : ((await q.toArray()) as any as T[])
|
|
151
185
|
})
|
|
152
186
|
|
|
153
187
|
if (paginate && paginate.default) {
|
|
154
|
-
if (useEstimatedDocumentCount &&
|
|
188
|
+
if (useEstimatedDocumentCount && typeof model.estimatedDocumentCount === 'function') {
|
|
155
189
|
return model.estimatedDocumentCount().then(runQuery)
|
|
156
190
|
}
|
|
157
191
|
|
|
158
192
|
return model.countDocuments(query, findOptions).then(runQuery)
|
|
159
193
|
}
|
|
160
194
|
|
|
161
|
-
return runQuery(0).then(page => page.data)
|
|
195
|
+
return runQuery(0).then((page) => page.data)
|
|
162
196
|
}
|
|
163
197
|
|
|
164
|
-
async $create
|
|
165
|
-
async $create
|
|
166
|
-
async $create
|
|
167
|
-
async $create
|
|
198
|
+
async $create(data: Partial<D>, params?: P): Promise<T>
|
|
199
|
+
async $create(data: Partial<D>[], params?: P): Promise<T[]>
|
|
200
|
+
async $create(data: Partial<D> | Partial<D>[], _params?: P): Promise<T | T[]>
|
|
201
|
+
async $create(data: Partial<D> | Partial<D>[], params: P = {} as P): Promise<T | T[]> {
|
|
168
202
|
const writeOptions = params.mongodb
|
|
169
203
|
const { Model } = this.getOptions(params)
|
|
170
204
|
const model = await Promise.resolve(Model)
|
|
@@ -182,24 +216,29 @@ export class MongoDbAdapter<T, D = Partial<T>, P extends MongoDBAdapterParams =
|
|
|
182
216
|
return entry
|
|
183
217
|
}
|
|
184
218
|
const promise = Array.isArray(data)
|
|
185
|
-
? model
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
219
|
+
? model
|
|
220
|
+
.insertMany(data.map(setId), writeOptions)
|
|
221
|
+
.then(async (result) =>
|
|
222
|
+
Promise.all(Object.values(result.insertedIds).map(async (_id) => model.findOne({ _id })))
|
|
223
|
+
)
|
|
224
|
+
: model
|
|
225
|
+
.insertOne(setId(data), writeOptions)
|
|
226
|
+
.then(async (result) => model.findOne({ _id: result.insertedId }))
|
|
191
227
|
|
|
192
228
|
return promise.then(select(params, this.id)).catch(errorHandler)
|
|
193
229
|
}
|
|
194
230
|
|
|
195
|
-
async $patch
|
|
196
|
-
async $patch
|
|
197
|
-
async $patch
|
|
198
|
-
async $patch
|
|
231
|
+
async $patch(id: null, data: Partial<D>, params?: P): Promise<T[]>
|
|
232
|
+
async $patch(id: Id, data: Partial<D>, params?: P): Promise<T>
|
|
233
|
+
async $patch(id: NullableId, data: Partial<D>, _params?: P): Promise<T | T[]>
|
|
234
|
+
async $patch(id: NullableId, _data: Partial<D>, params: P = {} as P): Promise<T | T[]> {
|
|
199
235
|
const data = this.normalizeId(id, _data)
|
|
200
236
|
const { Model } = this.getOptions(params)
|
|
201
237
|
const model = await Promise.resolve(Model)
|
|
202
|
-
const {
|
|
238
|
+
const {
|
|
239
|
+
query,
|
|
240
|
+
filters: { $select, $limit }
|
|
241
|
+
} = this.filterQuery(id, params)
|
|
203
242
|
const updateOptions = { ...params.mongodb }
|
|
204
243
|
const modifier = Object.keys(data).reduce((current, key) => {
|
|
205
244
|
const value = (data as any)[key]
|
|
@@ -219,11 +258,11 @@ export class MongoDbAdapter<T, D = Partial<T>, P extends MongoDBAdapterParams =
|
|
|
219
258
|
...params,
|
|
220
259
|
query: {
|
|
221
260
|
...query,
|
|
222
|
-
$select: [
|
|
261
|
+
$select: [this.id]
|
|
223
262
|
},
|
|
224
263
|
paginate: false
|
|
225
264
|
})
|
|
226
|
-
const items =
|
|
265
|
+
const items = Array.isArray(originalIds) ? originalIds : [originalIds]
|
|
227
266
|
const idList = items.map((item: any) => item[this.id])
|
|
228
267
|
const findParams = {
|
|
229
268
|
...params,
|
|
@@ -240,7 +279,7 @@ export class MongoDbAdapter<T, D = Partial<T>, P extends MongoDBAdapterParams =
|
|
|
240
279
|
return this.$findOrGet(id, findParams).catch(errorHandler)
|
|
241
280
|
}
|
|
242
281
|
|
|
243
|
-
async $update
|
|
282
|
+
async $update(id: Id, data: D, params: P = {} as P): Promise<T> {
|
|
244
283
|
const { Model } = this.getOptions(params)
|
|
245
284
|
const model = await Promise.resolve(Model)
|
|
246
285
|
const { query } = this.filterQuery(id, params)
|
|
@@ -251,13 +290,16 @@ export class MongoDbAdapter<T, D = Partial<T>, P extends MongoDBAdapterParams =
|
|
|
251
290
|
return this.$findOrGet(id, params).catch(errorHandler)
|
|
252
291
|
}
|
|
253
292
|
|
|
254
|
-
async $remove
|
|
255
|
-
async $remove
|
|
256
|
-
async $remove
|
|
257
|
-
async $remove
|
|
293
|
+
async $remove(id: null, params?: P): Promise<T[]>
|
|
294
|
+
async $remove(id: Id, params?: P): Promise<T>
|
|
295
|
+
async $remove(id: NullableId, _params?: P): Promise<T | T[]>
|
|
296
|
+
async $remove(id: NullableId, params: P = {} as P): Promise<T | T[]> {
|
|
258
297
|
const { Model } = this.getOptions(params)
|
|
259
298
|
const model = await Promise.resolve(Model)
|
|
260
|
-
const {
|
|
299
|
+
const {
|
|
300
|
+
query,
|
|
301
|
+
filters: { $select, $limit }
|
|
302
|
+
} = this.filterQuery(id, params)
|
|
261
303
|
const deleteOptions = { ...params.mongodb }
|
|
262
304
|
const findParams = {
|
|
263
305
|
...params,
|
|
@@ -270,7 +312,7 @@ export class MongoDbAdapter<T, D = Partial<T>, P extends MongoDBAdapterParams =
|
|
|
270
312
|
}
|
|
271
313
|
|
|
272
314
|
return this.$findOrGet(id, findParams)
|
|
273
|
-
.then(async items => {
|
|
315
|
+
.then(async (items) => {
|
|
274
316
|
await model.deleteMany(query, deleteOptions)
|
|
275
317
|
return items
|
|
276
318
|
})
|
package/src/error-handler.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { GeneralError } from '@feathersjs/errors'
|
|
2
2
|
import { MongoError } from 'mongodb'
|
|
3
3
|
|
|
4
|
-
export function errorHandler
|
|
4
|
+
export function errorHandler(error: MongoError): any {
|
|
5
5
|
// See https://github.com/mongodb/mongo/blob/master/docs/errors.md
|
|
6
6
|
if (error && error.name && error.name.startsWith('Mongo')) {
|
|
7
7
|
throw new GeneralError(error, {
|
package/src/index.ts
CHANGED
|
@@ -6,37 +6,39 @@ export * from './adapter'
|
|
|
6
6
|
export * from './error-handler'
|
|
7
7
|
|
|
8
8
|
export class MongoDBService<T = any, D = Partial<T>, P extends MongoDBAdapterParams = MongoDBAdapterParams>
|
|
9
|
-
extends MongoDbAdapter<T, D, P>
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
async find
|
|
13
|
-
async find
|
|
9
|
+
extends MongoDbAdapter<T, D, P>
|
|
10
|
+
implements ServiceMethods<T | Paginated<T>, D, P>
|
|
11
|
+
{
|
|
12
|
+
async find(params?: P & { paginate?: PaginationOptions }): Promise<Paginated<T>>
|
|
13
|
+
async find(params?: P & { paginate: false }): Promise<T[]>
|
|
14
|
+
async find(params?: P): Promise<Paginated<T> | T[]>
|
|
15
|
+
async find(params?: P): Promise<Paginated<T> | T[]> {
|
|
14
16
|
return this._find(params) as any
|
|
15
17
|
}
|
|
16
18
|
|
|
17
|
-
async get
|
|
19
|
+
async get(id: Id, params?: P): Promise<T> {
|
|
18
20
|
return this._get(id, params)
|
|
19
21
|
}
|
|
20
22
|
|
|
21
|
-
async create
|
|
22
|
-
async create
|
|
23
|
-
async create
|
|
23
|
+
async create(data: Partial<D>, params?: P): Promise<T>
|
|
24
|
+
async create(data: Partial<D>[], params?: P): Promise<T[]>
|
|
25
|
+
async create(data: Partial<D> | Partial<D>[], params?: P): Promise<T | T[]> {
|
|
24
26
|
return this._create(data, params)
|
|
25
27
|
}
|
|
26
28
|
|
|
27
|
-
async update
|
|
29
|
+
async update(id: Id, data: D, params?: P): Promise<T> {
|
|
28
30
|
return this._update(id, data, params)
|
|
29
31
|
}
|
|
30
32
|
|
|
31
|
-
async patch
|
|
32
|
-
async patch
|
|
33
|
-
async patch
|
|
33
|
+
async patch(id: Id, data: Partial<D>, params?: P): Promise<T>
|
|
34
|
+
async patch(id: null, data: Partial<D>, params?: P): Promise<T[]>
|
|
35
|
+
async patch(id: NullableId, data: Partial<D>, params?: P): Promise<T | T[]> {
|
|
34
36
|
return this._patch(id, data, params)
|
|
35
37
|
}
|
|
36
38
|
|
|
37
|
-
async remove
|
|
38
|
-
async remove
|
|
39
|
-
async remove
|
|
39
|
+
async remove(id: Id, params?: P): Promise<T>
|
|
40
|
+
async remove(id: null, params?: P): Promise<T[]>
|
|
41
|
+
async remove(id: NullableId, params?: P): Promise<T | T[]> {
|
|
40
42
|
return this._remove(id, params)
|
|
41
43
|
}
|
|
42
44
|
}
|