@feathersjs/mongodb 5.0.0-pre.32 → 5.0.0-pre.34
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 +16 -0
- package/lib/adapter.d.ts +30 -23
- package/lib/adapter.js +96 -48
- package/lib/adapter.js.map +1 -1
- package/lib/index.d.ts +17 -16
- package/lib/index.js +27 -5
- package/lib/index.js.map +1 -1
- package/lib/resolvers.d.ts +10 -0
- package/lib/resolvers.js +30 -0
- package/lib/resolvers.js.map +1 -0
- package/package.json +12 -12
- package/src/adapter.ts +150 -73
- package/src/index.ts +53 -26
- package/src/resolvers.ts +45 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,22 @@
|
|
|
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.34](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.33...v5.0.0-pre.34) (2022-12-14)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- **schema:** Check for undefined value in resolveQueryObjectId resolver ([#2914](https://github.com/feathersjs/feathers/issues/2914)) ([d9449fa](https://github.com/feathersjs/feathers/commit/d9449fa835f58fc9cec5f7254c50219494129140))
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- **adapter:** Add patch data type to adapters and refactor AdapterBase usage ([#2906](https://github.com/feathersjs/feathers/issues/2906)) ([9ddc2e6](https://github.com/feathersjs/feathers/commit/9ddc2e6b028f026f939d6af68125847e5c6734b4))
|
|
15
|
+
|
|
16
|
+
# [5.0.0-pre.33](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.32...v5.0.0-pre.33) (2022-11-08)
|
|
17
|
+
|
|
18
|
+
### Features
|
|
19
|
+
|
|
20
|
+
- **mongodb:** Add ObjectId resolvers and MongoDB option in the guide ([#2847](https://github.com/feathersjs/feathers/issues/2847)) ([c5c1fba](https://github.com/feathersjs/feathers/commit/c5c1fba5718a63412075cd3838b86b889eb0bd48))
|
|
21
|
+
|
|
6
22
|
# [5.0.0-pre.32](https://github.com/feathersjs/feathers/compare/v5.0.0-pre.31...v5.0.0-pre.32) (2022-10-26)
|
|
7
23
|
|
|
8
24
|
**Note:** Version bump only for package @feathersjs/mongodb
|
package/lib/adapter.d.ts
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
import { ObjectId, Collection, FindOptions, BulkWriteOptions, InsertOneOptions, DeleteOptions, CountDocumentsOptions, ReplaceOptions } from 'mongodb';
|
|
1
|
+
import { ObjectId, Collection, FindOptions, BulkWriteOptions, InsertOneOptions, DeleteOptions, CountDocumentsOptions, ReplaceOptions, Document } from 'mongodb';
|
|
2
2
|
import { AdapterBase, AdapterParams, AdapterServiceOptions, PaginationOptions, AdapterQuery } from '@feathersjs/adapter-commons';
|
|
3
|
-
import {
|
|
3
|
+
import { Id, Paginated } from '@feathersjs/feathers';
|
|
4
4
|
export interface MongoDBAdapterOptions extends AdapterServiceOptions {
|
|
5
5
|
Model: Collection | Promise<Collection>;
|
|
6
6
|
disableObjectify?: boolean;
|
|
7
7
|
useEstimatedDocumentCount?: boolean;
|
|
8
8
|
}
|
|
9
9
|
export interface MongoDBAdapterParams<Q = AdapterQuery> extends AdapterParams<Q, Partial<MongoDBAdapterOptions>> {
|
|
10
|
+
pipeline?: Document[];
|
|
10
11
|
mongodb?: BulkWriteOptions | FindOptions | InsertOneOptions | DeleteOptions | CountDocumentsOptions | ReplaceOptions;
|
|
11
12
|
}
|
|
12
|
-
export
|
|
13
|
+
export type AdapterId = Id | ObjectId;
|
|
14
|
+
export type NullableAdapterId = AdapterId | null;
|
|
15
|
+
export declare class MongoDbAdapter<Result, Data = Partial<Result>, ServiceParams extends MongoDBAdapterParams<any> = MongoDBAdapterParams, PatchData = Partial<Data>> extends AdapterBase<Result, Data, PatchData, ServiceParams, MongoDBAdapterOptions, AdapterId> {
|
|
13
16
|
constructor(options: MongoDBAdapterOptions);
|
|
14
|
-
getObjectId(id:
|
|
15
|
-
filterQuery(id:
|
|
17
|
+
getObjectId(id: AdapterId): AdapterId;
|
|
18
|
+
filterQuery(id: NullableAdapterId, params: ServiceParams): {
|
|
16
19
|
filters: {
|
|
17
20
|
$select: string[];
|
|
18
21
|
$sort: {
|
|
@@ -25,29 +28,33 @@ export declare class MongoDbAdapter<T, D = Partial<T>, P extends MongoDBAdapterP
|
|
|
25
28
|
[key: string]: any;
|
|
26
29
|
};
|
|
27
30
|
};
|
|
31
|
+
getModel(params: ServiceParams): Promise<Collection<Document>>;
|
|
32
|
+
findRaw(params: ServiceParams): Promise<import("mongodb").FindCursor<import("mongodb").WithId<Document>>>;
|
|
33
|
+
aggregateRaw(params: ServiceParams): Promise<import("mongodb").AggregationCursor<Document>>;
|
|
34
|
+
makeFeathersPipeline(params: ServiceParams): Document[];
|
|
28
35
|
getSelect(select: string[] | {
|
|
29
36
|
[key: string]: number;
|
|
30
37
|
}): {
|
|
31
38
|
[key: string]: number;
|
|
32
39
|
};
|
|
33
|
-
|
|
34
|
-
normalizeId(id:
|
|
35
|
-
|
|
36
|
-
|
|
40
|
+
_findOrGet(id: NullableAdapterId, params: ServiceParams): Promise<Result | Paginated<Result> | Result[]>;
|
|
41
|
+
normalizeId<D>(id: NullableAdapterId, data: D): D;
|
|
42
|
+
_get(id: AdapterId, params?: ServiceParams): Promise<Result>;
|
|
43
|
+
_find(params?: ServiceParams & {
|
|
37
44
|
paginate?: PaginationOptions;
|
|
38
|
-
}): Promise<Paginated<
|
|
39
|
-
|
|
45
|
+
}): Promise<Paginated<Result>>;
|
|
46
|
+
_find(params?: ServiceParams & {
|
|
40
47
|
paginate: false;
|
|
41
|
-
}): Promise<
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
48
|
+
}): Promise<Result[]>;
|
|
49
|
+
_find(params?: ServiceParams): Promise<Paginated<Result> | Result[]>;
|
|
50
|
+
_create(data: Data, params?: ServiceParams): Promise<Result>;
|
|
51
|
+
_create(data: Data[], params?: ServiceParams): Promise<Result[]>;
|
|
52
|
+
_create(data: Data | Data[], _params?: ServiceParams): Promise<Result | Result[]>;
|
|
53
|
+
_patch(id: null, data: PatchData, params?: ServiceParams): Promise<Result[]>;
|
|
54
|
+
_patch(id: AdapterId, data: PatchData, params?: ServiceParams): Promise<Result>;
|
|
55
|
+
_patch(id: NullableAdapterId, data: PatchData, _params?: ServiceParams): Promise<Result | Result[]>;
|
|
56
|
+
_update(id: AdapterId, data: Data, params?: ServiceParams): Promise<Result>;
|
|
57
|
+
_remove(id: null, params?: ServiceParams): Promise<Result[]>;
|
|
58
|
+
_remove(id: AdapterId, params?: ServiceParams): Promise<Result>;
|
|
59
|
+
_remove(id: NullableAdapterId, _params?: ServiceParams): Promise<Result | Result[]>;
|
|
53
60
|
}
|
package/lib/adapter.js
CHANGED
|
@@ -41,6 +41,54 @@ class MongoDbAdapter extends adapter_commons_1.AdapterBase {
|
|
|
41
41
|
query
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
|
+
getModel(params) {
|
|
45
|
+
const { Model } = this.getOptions(params);
|
|
46
|
+
return Promise.resolve(Model);
|
|
47
|
+
}
|
|
48
|
+
async findRaw(params) {
|
|
49
|
+
const { filters, query } = this.filterQuery(null, params);
|
|
50
|
+
const model = await this.getModel(params);
|
|
51
|
+
const q = model.find(query, { ...params.mongodb });
|
|
52
|
+
if (filters.$select !== undefined) {
|
|
53
|
+
q.project(this.getSelect(filters.$select));
|
|
54
|
+
}
|
|
55
|
+
if (filters.$sort !== undefined) {
|
|
56
|
+
q.sort(filters.$sort);
|
|
57
|
+
}
|
|
58
|
+
if (filters.$skip !== undefined) {
|
|
59
|
+
q.skip(filters.$skip);
|
|
60
|
+
}
|
|
61
|
+
if (filters.$limit !== undefined) {
|
|
62
|
+
q.limit(filters.$limit);
|
|
63
|
+
}
|
|
64
|
+
return q;
|
|
65
|
+
}
|
|
66
|
+
async aggregateRaw(params) {
|
|
67
|
+
const model = await this.getModel(params);
|
|
68
|
+
const pipeline = params.pipeline || [];
|
|
69
|
+
const index = pipeline.findIndex((stage) => stage.$feathers);
|
|
70
|
+
const before = index >= 0 ? pipeline.slice(0, index) : [];
|
|
71
|
+
const feathersPipeline = this.makeFeathersPipeline(params);
|
|
72
|
+
const after = index >= 0 ? pipeline.slice(index + 1) : pipeline;
|
|
73
|
+
return model.aggregate([...before, ...feathersPipeline, ...after]);
|
|
74
|
+
}
|
|
75
|
+
makeFeathersPipeline(params) {
|
|
76
|
+
const { filters, query } = this.filterQuery(null, params);
|
|
77
|
+
const pipeline = [{ $match: query }];
|
|
78
|
+
if (filters.$select !== undefined) {
|
|
79
|
+
pipeline.push({ $project: this.getSelect(filters.$select) });
|
|
80
|
+
}
|
|
81
|
+
if (filters.$sort !== undefined) {
|
|
82
|
+
pipeline.push({ $sort: filters.$sort });
|
|
83
|
+
}
|
|
84
|
+
if (filters.$skip !== undefined) {
|
|
85
|
+
pipeline.push({ $skip: filters.$skip });
|
|
86
|
+
}
|
|
87
|
+
if (filters.$limit !== undefined) {
|
|
88
|
+
pipeline.push({ $limit: filters.$limit });
|
|
89
|
+
}
|
|
90
|
+
return pipeline;
|
|
91
|
+
}
|
|
44
92
|
getSelect(select) {
|
|
45
93
|
if (Array.isArray(select)) {
|
|
46
94
|
return select.reduce((value, name) => ({
|
|
@@ -50,8 +98,8 @@ class MongoDbAdapter extends adapter_commons_1.AdapterBase {
|
|
|
50
98
|
}
|
|
51
99
|
return select;
|
|
52
100
|
}
|
|
53
|
-
async
|
|
54
|
-
return id === null ? await this
|
|
101
|
+
async _findOrGet(id, params) {
|
|
102
|
+
return id === null ? await this._find(params) : await this._get(id, params);
|
|
55
103
|
}
|
|
56
104
|
normalizeId(id, data) {
|
|
57
105
|
if (this.id === '_id') {
|
|
@@ -69,8 +117,7 @@ class MongoDbAdapter extends adapter_commons_1.AdapterBase {
|
|
|
69
117
|
}
|
|
70
118
|
return data;
|
|
71
119
|
}
|
|
72
|
-
async
|
|
73
|
-
const { Model } = this.getOptions(params);
|
|
120
|
+
async _get(id, params = {}) {
|
|
74
121
|
const { query, filters: { $select } } = this.filterQuery(id, params);
|
|
75
122
|
const projection = $select
|
|
76
123
|
? {
|
|
@@ -84,7 +131,7 @@ class MongoDbAdapter extends adapter_commons_1.AdapterBase {
|
|
|
84
131
|
...params.mongodb,
|
|
85
132
|
...projection
|
|
86
133
|
};
|
|
87
|
-
return
|
|
134
|
+
return this.getModel(params)
|
|
88
135
|
.then((model) => model.findOne(query, findOptions))
|
|
89
136
|
.then((data) => {
|
|
90
137
|
if (data == null) {
|
|
@@ -94,42 +141,37 @@ class MongoDbAdapter extends adapter_commons_1.AdapterBase {
|
|
|
94
141
|
})
|
|
95
142
|
.catch(error_handler_1.errorHandler);
|
|
96
143
|
}
|
|
97
|
-
async
|
|
144
|
+
async _find(params = {}) {
|
|
145
|
+
const { paginate, useEstimatedDocumentCount } = this.getOptions(params);
|
|
98
146
|
const { filters, query } = this.filterQuery(null, params);
|
|
99
|
-
const
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
147
|
+
const useAggregation = !params.mongodb && filters.$limit !== 0;
|
|
148
|
+
const countDocuments = async () => {
|
|
149
|
+
if (paginate && paginate.default) {
|
|
150
|
+
const model = await this.getModel(params);
|
|
151
|
+
if (useEstimatedDocumentCount && typeof model.estimatedDocumentCount === 'function') {
|
|
152
|
+
return model.estimatedDocumentCount();
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
return model.countDocuments(query, { ...params.mongodb });
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return Promise.resolve(0);
|
|
159
|
+
};
|
|
160
|
+
const [request, total] = await Promise.all([
|
|
161
|
+
useAggregation ? this.aggregateRaw(params) : this.findRaw(params),
|
|
162
|
+
countDocuments()
|
|
163
|
+
]);
|
|
164
|
+
const page = {
|
|
116
165
|
total,
|
|
117
166
|
limit: filters.$limit,
|
|
118
167
|
skip: filters.$skip || 0,
|
|
119
|
-
data: filters.$limit === 0 ? [] : (await
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
if (useEstimatedDocumentCount && typeof model.estimatedDocumentCount === 'function') {
|
|
123
|
-
return model.estimatedDocumentCount().then(runQuery);
|
|
124
|
-
}
|
|
125
|
-
return model.countDocuments(query, findOptions).then(runQuery);
|
|
126
|
-
}
|
|
127
|
-
return runQuery(0).then((page) => page.data);
|
|
168
|
+
data: filters.$limit === 0 ? [] : (await request.toArray())
|
|
169
|
+
};
|
|
170
|
+
return paginate && paginate.default ? page : page.data;
|
|
128
171
|
}
|
|
129
|
-
async
|
|
172
|
+
async _create(data, params = {}) {
|
|
130
173
|
const writeOptions = params.mongodb;
|
|
131
|
-
const
|
|
132
|
-
const model = await Promise.resolve(Model);
|
|
174
|
+
const model = await this.getModel(params);
|
|
133
175
|
const setId = (item) => {
|
|
134
176
|
const entry = Object.assign({}, item);
|
|
135
177
|
// Generate a MongoId if we use a custom id
|
|
@@ -150,10 +192,12 @@ class MongoDbAdapter extends adapter_commons_1.AdapterBase {
|
|
|
150
192
|
.then(async (result) => model.findOne({ _id: result.insertedId }, params.mongodb));
|
|
151
193
|
return promise.then((0, adapter_commons_1.select)(params, this.id)).catch(error_handler_1.errorHandler);
|
|
152
194
|
}
|
|
153
|
-
async
|
|
195
|
+
async _patch(id, _data, params = {}) {
|
|
196
|
+
if (id === null && !this.allowsMulti('patch', params)) {
|
|
197
|
+
throw new errors_1.MethodNotAllowed('Can not patch multiple entries');
|
|
198
|
+
}
|
|
154
199
|
const data = this.normalizeId(id, _data);
|
|
155
|
-
const
|
|
156
|
-
const model = await Promise.resolve(Model);
|
|
200
|
+
const model = await this.getModel(params);
|
|
157
201
|
const { query, filters: { $select } } = this.filterQuery(id, params);
|
|
158
202
|
const updateOptions = { ...params.mongodb };
|
|
159
203
|
const modifier = Object.keys(data).reduce((current, key) => {
|
|
@@ -169,7 +213,7 @@ class MongoDbAdapter extends adapter_commons_1.AdapterBase {
|
|
|
169
213
|
}
|
|
170
214
|
return current;
|
|
171
215
|
}, {});
|
|
172
|
-
const originalIds = await this
|
|
216
|
+
const originalIds = await this._findOrGet(id, {
|
|
173
217
|
...params,
|
|
174
218
|
query: {
|
|
175
219
|
...query,
|
|
@@ -188,19 +232,23 @@ class MongoDbAdapter extends adapter_commons_1.AdapterBase {
|
|
|
188
232
|
}
|
|
189
233
|
};
|
|
190
234
|
await model.updateMany(query, modifier, updateOptions);
|
|
191
|
-
return this
|
|
235
|
+
return this._findOrGet(id, findParams).catch(error_handler_1.errorHandler);
|
|
192
236
|
}
|
|
193
|
-
async
|
|
194
|
-
|
|
195
|
-
|
|
237
|
+
async _update(id, data, params = {}) {
|
|
238
|
+
if (id === null || Array.isArray(data)) {
|
|
239
|
+
throw new errors_1.BadRequest("You can not replace multiple instances. Did you mean 'patch'?");
|
|
240
|
+
}
|
|
241
|
+
const model = await this.getModel(params);
|
|
196
242
|
const { query } = this.filterQuery(id, params);
|
|
197
243
|
const replaceOptions = { ...params.mongodb };
|
|
198
244
|
await model.replaceOne(query, this.normalizeId(id, data), replaceOptions);
|
|
199
|
-
return this
|
|
245
|
+
return this._findOrGet(id, params).catch(error_handler_1.errorHandler);
|
|
200
246
|
}
|
|
201
|
-
async
|
|
202
|
-
|
|
203
|
-
|
|
247
|
+
async _remove(id, params = {}) {
|
|
248
|
+
if (id === null && !this.allowsMulti('remove', params)) {
|
|
249
|
+
throw new errors_1.MethodNotAllowed('Can not remove multiple entries');
|
|
250
|
+
}
|
|
251
|
+
const model = await this.getModel(params);
|
|
204
252
|
const { query, filters: { $select } } = this.filterQuery(id, params);
|
|
205
253
|
const deleteOptions = { ...params.mongodb };
|
|
206
254
|
const findParams = {
|
|
@@ -211,7 +259,7 @@ class MongoDbAdapter extends adapter_commons_1.AdapterBase {
|
|
|
211
259
|
$select
|
|
212
260
|
}
|
|
213
261
|
};
|
|
214
|
-
return this
|
|
262
|
+
return this._findOrGet(id, findParams)
|
|
215
263
|
.then(async (items) => {
|
|
216
264
|
await model.deleteMany(query, deleteOptions);
|
|
217
265
|
return items;
|
package/lib/adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import { PaginationOptions } from '@feathersjs/adapter-commons';
|
|
2
|
-
import { Paginated,
|
|
3
|
-
import { MongoDbAdapter, MongoDBAdapterParams } from './adapter';
|
|
2
|
+
import { Paginated, Params } from '@feathersjs/feathers';
|
|
3
|
+
import { AdapterId, MongoDbAdapter, MongoDBAdapterParams } from './adapter';
|
|
4
4
|
export * from './adapter';
|
|
5
5
|
export * from './error-handler';
|
|
6
|
-
export
|
|
7
|
-
|
|
6
|
+
export * from './resolvers';
|
|
7
|
+
export declare class MongoDBService<Result = any, Data = Partial<Result>, ServiceParams extends Params<any> = MongoDBAdapterParams, PatchData = Partial<Data>> extends MongoDbAdapter<Result, Data, ServiceParams, PatchData> {
|
|
8
|
+
find(params?: ServiceParams & {
|
|
8
9
|
paginate?: PaginationOptions;
|
|
9
|
-
}): Promise<Paginated<
|
|
10
|
-
find(params?:
|
|
10
|
+
}): Promise<Paginated<Result>>;
|
|
11
|
+
find(params?: ServiceParams & {
|
|
11
12
|
paginate: false;
|
|
12
|
-
}): Promise<
|
|
13
|
-
find(params?:
|
|
14
|
-
get(id:
|
|
15
|
-
create(data:
|
|
16
|
-
create(data:
|
|
17
|
-
update(id:
|
|
18
|
-
patch(id:
|
|
19
|
-
patch(id:
|
|
20
|
-
remove(id:
|
|
21
|
-
remove(id: null, params?:
|
|
13
|
+
}): Promise<Result[]>;
|
|
14
|
+
find(params?: ServiceParams): Promise<Paginated<Result> | Result[]>;
|
|
15
|
+
get(id: AdapterId, params?: ServiceParams): Promise<Result>;
|
|
16
|
+
create(data: Data, params?: ServiceParams): Promise<Result>;
|
|
17
|
+
create(data: Data[], params?: ServiceParams): Promise<Result[]>;
|
|
18
|
+
update(id: AdapterId, data: Data, params?: ServiceParams): Promise<Result>;
|
|
19
|
+
patch(id: null, data: PatchData, params?: ServiceParams): Promise<Result[]>;
|
|
20
|
+
patch(id: AdapterId, data: PatchData, params?: ServiceParams): Promise<Result>;
|
|
21
|
+
remove(id: AdapterId, params?: ServiceParams): Promise<Result>;
|
|
22
|
+
remove(id: null, params?: ServiceParams): Promise<Result[]>;
|
|
22
23
|
}
|
package/lib/index.js
CHANGED
|
@@ -15,27 +15,49 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.MongoDBService = void 0;
|
|
18
|
+
const lib_1 = require("@feathersjs/errors/lib");
|
|
18
19
|
const adapter_1 = require("./adapter");
|
|
19
20
|
__exportStar(require("./adapter"), exports);
|
|
20
21
|
__exportStar(require("./error-handler"), exports);
|
|
22
|
+
__exportStar(require("./resolvers"), exports);
|
|
21
23
|
class MongoDBService extends adapter_1.MongoDbAdapter {
|
|
22
24
|
async find(params) {
|
|
23
|
-
return this._find(
|
|
25
|
+
return this._find({
|
|
26
|
+
...params,
|
|
27
|
+
query: await this.sanitizeQuery(params)
|
|
28
|
+
});
|
|
24
29
|
}
|
|
25
30
|
async get(id, params) {
|
|
26
|
-
return this._get(id,
|
|
31
|
+
return this._get(id, {
|
|
32
|
+
...params,
|
|
33
|
+
query: await this.sanitizeQuery(params)
|
|
34
|
+
});
|
|
27
35
|
}
|
|
28
36
|
async create(data, params) {
|
|
37
|
+
if (Array.isArray(data) && !this.allowsMulti('create', params)) {
|
|
38
|
+
throw new lib_1.MethodNotAllowed('Can not create multiple entries');
|
|
39
|
+
}
|
|
29
40
|
return this._create(data, params);
|
|
30
41
|
}
|
|
31
42
|
async update(id, data, params) {
|
|
32
|
-
return this._update(id, data,
|
|
43
|
+
return this._update(id, data, {
|
|
44
|
+
...params,
|
|
45
|
+
query: await this.sanitizeQuery(params)
|
|
46
|
+
});
|
|
33
47
|
}
|
|
34
48
|
async patch(id, data, params) {
|
|
35
|
-
|
|
49
|
+
const { $limit, ...query } = await this.sanitizeQuery(params);
|
|
50
|
+
return this._patch(id, data, {
|
|
51
|
+
...params,
|
|
52
|
+
query
|
|
53
|
+
});
|
|
36
54
|
}
|
|
37
55
|
async remove(id, params) {
|
|
38
|
-
|
|
56
|
+
const { $limit, ...query } = await this.sanitizeQuery(params);
|
|
57
|
+
return this._remove(id, {
|
|
58
|
+
...params,
|
|
59
|
+
query
|
|
60
|
+
});
|
|
39
61
|
}
|
|
40
62
|
}
|
|
41
63
|
exports.MongoDBService = MongoDBService;
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,gDAAyD;AAEzD,uCAA8F;AAE9F,4CAAyB;AACzB,kDAA+B;AAC/B,8CAA2B;AAE3B,MAAa,cAKX,SAAQ,wBAAsD;IAI9D,KAAK,CAAC,IAAI,CAAC,MAAsB;QAC/B,OAAO,IAAI,CAAC,KAAK,CAAC;YAChB,GAAG,MAAM;YACT,KAAK,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;SACxC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAa,EAAE,MAAsB;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YACnB,GAAG,MAAM;YACT,KAAK,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;SACxC,CAAC,CAAA;IACJ,CAAC;IAID,KAAK,CAAC,MAAM,CAAC,IAAmB,EAAE,MAAsB;QACtD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;YAC9D,MAAM,IAAI,sBAAgB,CAAC,iCAAiC,CAAC,CAAA;SAC9D;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAa,EAAE,IAAU,EAAE,MAAsB;QAC5D,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE;YAC5B,GAAG,MAAM;YACT,KAAK,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;SACxC,CAAC,CAAA;IACJ,CAAC;IAID,KAAK,CAAC,KAAK,CAAC,EAAqB,EAAE,IAAe,EAAE,MAAsB;QACxE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAE7D,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE;YAC3B,GAAG,MAAM;YACT,KAAK;SACN,CAAC,CAAA;IACJ,CAAC;IAID,KAAK,CAAC,MAAM,CAAC,EAAqB,EAAE,MAAsB;QACxD,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAE7D,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE;YACtB,GAAG,MAAM;YACT,KAAK;SACN,CAAC,CAAA;IACJ,CAAC;CACF;AA7DD,wCA6DC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ObjectId } from 'mongodb';
|
|
2
|
+
export type ObjectIdParam = string | number | ObjectId;
|
|
3
|
+
export type IdQueryObject<T> = {
|
|
4
|
+
$in?: T[];
|
|
5
|
+
$nin?: T[];
|
|
6
|
+
$ne?: T;
|
|
7
|
+
};
|
|
8
|
+
export declare function resolveObjectId(value: ObjectIdParam): Promise<ObjectId>;
|
|
9
|
+
export declare function resolveQueryObjectId(value: IdQueryObject<ObjectIdParam>): Promise<IdQueryObject<ObjectId>>;
|
|
10
|
+
export declare function resolveQueryObjectId(value: ObjectIdParam): Promise<ObjectId>;
|
package/lib/resolvers.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveQueryObjectId = exports.resolveObjectId = void 0;
|
|
4
|
+
const mongodb_1 = require("mongodb");
|
|
5
|
+
const toObjectId = (value) => new mongodb_1.ObjectId(value);
|
|
6
|
+
async function resolveObjectId(value) {
|
|
7
|
+
return toObjectId(value);
|
|
8
|
+
}
|
|
9
|
+
exports.resolveObjectId = resolveObjectId;
|
|
10
|
+
async function resolveQueryObjectId(value) {
|
|
11
|
+
if (!value) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
if (typeof value === 'string' || typeof value === 'number' || value instanceof mongodb_1.ObjectId) {
|
|
15
|
+
return toObjectId(value);
|
|
16
|
+
}
|
|
17
|
+
const convertedObject = {};
|
|
18
|
+
if (Array.isArray(value.$in)) {
|
|
19
|
+
convertedObject.$in = value.$in.map(toObjectId);
|
|
20
|
+
}
|
|
21
|
+
if (Array.isArray(value.$nin)) {
|
|
22
|
+
convertedObject.$nin = value.$nin.map(toObjectId);
|
|
23
|
+
}
|
|
24
|
+
if (value.$ne !== undefined) {
|
|
25
|
+
convertedObject.$ne = toObjectId(value.$ne);
|
|
26
|
+
}
|
|
27
|
+
return convertedObject;
|
|
28
|
+
}
|
|
29
|
+
exports.resolveQueryObjectId = resolveQueryObjectId;
|
|
30
|
+
//# sourceMappingURL=resolvers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../src/resolvers.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;AAUlC,MAAM,UAAU,GAAG,CAAC,KAAoB,EAAE,EAAE,CAAC,IAAI,kBAAQ,CAAC,KAAK,CAAC,CAAA;AAEzD,KAAK,UAAU,eAAe,CAAC,KAAoB;IACxD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAA;AAC1B,CAAC;AAFD,0CAEC;AAMM,KAAK,UAAU,oBAAoB,CAAC,KAAmD;IAC5F,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,SAAS,CAAA;KACjB;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,kBAAQ,EAAE;QACvF,OAAO,UAAU,CAAC,KAAK,CAAC,CAAA;KACzB;IAED,MAAM,eAAe,GAA4B,EAAE,CAAA;IAEnD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QAC5B,eAAe,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;KAChD;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QAC7B,eAAe,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;KAClD;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;QAC3B,eAAe,CAAC,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;KAC5C;IAED,OAAO,eAAe,CAAA;AACxB,CAAC;AAxBD,oDAwBC"}
|
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.34",
|
|
5
5
|
"homepage": "https://feathersjs.com",
|
|
6
6
|
"main": "lib/",
|
|
7
7
|
"keywords": [
|
|
@@ -51,22 +51,22 @@
|
|
|
51
51
|
"access": "public"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"@feathersjs/adapter-commons": "^5.0.0-pre.
|
|
55
|
-
"@feathersjs/commons": "^5.0.0-pre.
|
|
56
|
-
"@feathersjs/errors": "^5.0.0-pre.
|
|
57
|
-
"@feathersjs/feathers": "^5.0.0-pre.
|
|
54
|
+
"@feathersjs/adapter-commons": "^5.0.0-pre.34",
|
|
55
|
+
"@feathersjs/commons": "^5.0.0-pre.34",
|
|
56
|
+
"@feathersjs/errors": "^5.0.0-pre.34",
|
|
57
|
+
"@feathersjs/feathers": "^5.0.0-pre.34"
|
|
58
58
|
},
|
|
59
59
|
"peerDependencies": {
|
|
60
60
|
"mongodb": "^4.5.0"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
|
-
"@feathersjs/adapter-tests": "^5.0.0-pre.
|
|
64
|
-
"@types/mocha": "^10.0.
|
|
65
|
-
"@types/node": "^18.
|
|
66
|
-
"mocha": "^10.
|
|
67
|
-
"mongodb-memory-server": "^8.
|
|
63
|
+
"@feathersjs/adapter-tests": "^5.0.0-pre.34",
|
|
64
|
+
"@types/mocha": "^10.0.1",
|
|
65
|
+
"@types/node": "^18.11.10",
|
|
66
|
+
"mocha": "^10.1.0",
|
|
67
|
+
"mongodb-memory-server": "^8.10.1",
|
|
68
68
|
"shx": "^0.3.4",
|
|
69
|
-
"typescript": "^4.
|
|
69
|
+
"typescript": "^4.9.3"
|
|
70
70
|
},
|
|
71
|
-
"gitHead": "
|
|
71
|
+
"gitHead": "42cca600d00f0b3b9d89fa79be30fcd46bc50132"
|
|
72
72
|
}
|
package/src/adapter.ts
CHANGED
|
@@ -6,9 +6,10 @@ import {
|
|
|
6
6
|
InsertOneOptions,
|
|
7
7
|
DeleteOptions,
|
|
8
8
|
CountDocumentsOptions,
|
|
9
|
-
ReplaceOptions
|
|
9
|
+
ReplaceOptions,
|
|
10
|
+
Document
|
|
10
11
|
} from 'mongodb'
|
|
11
|
-
import { NotFound } from '@feathersjs/errors'
|
|
12
|
+
import { BadRequest, MethodNotAllowed, NotFound } from '@feathersjs/errors'
|
|
12
13
|
import { _ } from '@feathersjs/commons'
|
|
13
14
|
import {
|
|
14
15
|
AdapterBase,
|
|
@@ -18,7 +19,7 @@ import {
|
|
|
18
19
|
PaginationOptions,
|
|
19
20
|
AdapterQuery
|
|
20
21
|
} from '@feathersjs/adapter-commons'
|
|
21
|
-
import {
|
|
22
|
+
import { Id, Paginated } from '@feathersjs/feathers'
|
|
22
23
|
import { errorHandler } from './error-handler'
|
|
23
24
|
|
|
24
25
|
export interface MongoDBAdapterOptions extends AdapterServiceOptions {
|
|
@@ -29,6 +30,7 @@ export interface MongoDBAdapterOptions extends AdapterServiceOptions {
|
|
|
29
30
|
|
|
30
31
|
export interface MongoDBAdapterParams<Q = AdapterQuery>
|
|
31
32
|
extends AdapterParams<Q, Partial<MongoDBAdapterOptions>> {
|
|
33
|
+
pipeline?: Document[]
|
|
32
34
|
mongodb?:
|
|
33
35
|
| BulkWriteOptions
|
|
34
36
|
| FindOptions
|
|
@@ -38,12 +40,17 @@ export interface MongoDBAdapterParams<Q = AdapterQuery>
|
|
|
38
40
|
| ReplaceOptions
|
|
39
41
|
}
|
|
40
42
|
|
|
43
|
+
export type AdapterId = Id | ObjectId
|
|
44
|
+
|
|
45
|
+
export type NullableAdapterId = AdapterId | null
|
|
46
|
+
|
|
41
47
|
// Create the service.
|
|
42
48
|
export class MongoDbAdapter<
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
49
|
+
Result,
|
|
50
|
+
Data = Partial<Result>,
|
|
51
|
+
ServiceParams extends MongoDBAdapterParams<any> = MongoDBAdapterParams,
|
|
52
|
+
PatchData = Partial<Data>
|
|
53
|
+
> extends AdapterBase<Result, Data, PatchData, ServiceParams, MongoDBAdapterOptions, AdapterId> {
|
|
47
54
|
constructor(options: MongoDBAdapterOptions) {
|
|
48
55
|
if (!options) {
|
|
49
56
|
throw new Error('MongoDB options have to be provided')
|
|
@@ -55,7 +62,7 @@ export class MongoDbAdapter<
|
|
|
55
62
|
})
|
|
56
63
|
}
|
|
57
64
|
|
|
58
|
-
getObjectId(id:
|
|
65
|
+
getObjectId(id: AdapterId) {
|
|
59
66
|
if (this.options.disableObjectify) {
|
|
60
67
|
return id
|
|
61
68
|
}
|
|
@@ -67,7 +74,7 @@ export class MongoDbAdapter<
|
|
|
67
74
|
return id
|
|
68
75
|
}
|
|
69
76
|
|
|
70
|
-
filterQuery(id:
|
|
77
|
+
filterQuery(id: NullableAdapterId, params: ServiceParams) {
|
|
71
78
|
const { $select, $sort, $limit, $skip, ...query } = (params.query || {}) as AdapterQuery
|
|
72
79
|
|
|
73
80
|
if (id !== null) {
|
|
@@ -86,6 +93,68 @@ export class MongoDbAdapter<
|
|
|
86
93
|
}
|
|
87
94
|
}
|
|
88
95
|
|
|
96
|
+
getModel(params: ServiceParams) {
|
|
97
|
+
const { Model } = this.getOptions(params)
|
|
98
|
+
return Promise.resolve(Model)
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
async findRaw(params: ServiceParams) {
|
|
102
|
+
const { filters, query } = this.filterQuery(null, params)
|
|
103
|
+
const model = await this.getModel(params)
|
|
104
|
+
const q = model.find(query, { ...params.mongodb })
|
|
105
|
+
|
|
106
|
+
if (filters.$select !== undefined) {
|
|
107
|
+
q.project(this.getSelect(filters.$select))
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if (filters.$sort !== undefined) {
|
|
111
|
+
q.sort(filters.$sort)
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (filters.$skip !== undefined) {
|
|
115
|
+
q.skip(filters.$skip)
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
if (filters.$limit !== undefined) {
|
|
119
|
+
q.limit(filters.$limit)
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
return q
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
async aggregateRaw(params: ServiceParams) {
|
|
126
|
+
const model = await this.getModel(params)
|
|
127
|
+
const pipeline = params.pipeline || []
|
|
128
|
+
const index = pipeline.findIndex((stage: Document) => stage.$feathers)
|
|
129
|
+
const before = index >= 0 ? pipeline.slice(0, index) : []
|
|
130
|
+
const feathersPipeline = this.makeFeathersPipeline(params)
|
|
131
|
+
const after = index >= 0 ? pipeline.slice(index + 1) : pipeline
|
|
132
|
+
|
|
133
|
+
return model.aggregate([...before, ...feathersPipeline, ...after])
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
makeFeathersPipeline(params: ServiceParams) {
|
|
137
|
+
const { filters, query } = this.filterQuery(null, params)
|
|
138
|
+
const pipeline: Document[] = [{ $match: query }]
|
|
139
|
+
|
|
140
|
+
if (filters.$select !== undefined) {
|
|
141
|
+
pipeline.push({ $project: this.getSelect(filters.$select) })
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
if (filters.$sort !== undefined) {
|
|
145
|
+
pipeline.push({ $sort: filters.$sort })
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
if (filters.$skip !== undefined) {
|
|
149
|
+
pipeline.push({ $skip: filters.$skip })
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
if (filters.$limit !== undefined) {
|
|
153
|
+
pipeline.push({ $limit: filters.$limit })
|
|
154
|
+
}
|
|
155
|
+
return pipeline
|
|
156
|
+
}
|
|
157
|
+
|
|
89
158
|
getSelect(select: string[] | { [key: string]: number }) {
|
|
90
159
|
if (Array.isArray(select)) {
|
|
91
160
|
return select.reduce<{ [key: string]: number }>(
|
|
@@ -100,11 +169,11 @@ export class MongoDbAdapter<
|
|
|
100
169
|
return select
|
|
101
170
|
}
|
|
102
171
|
|
|
103
|
-
async
|
|
104
|
-
return id === null ? await this
|
|
172
|
+
async _findOrGet(id: NullableAdapterId, params: ServiceParams) {
|
|
173
|
+
return id === null ? await this._find(params) : await this._get(id, params)
|
|
105
174
|
}
|
|
106
175
|
|
|
107
|
-
normalizeId(id:
|
|
176
|
+
normalizeId<D>(id: NullableAdapterId, data: D): D {
|
|
108
177
|
if (this.id === '_id') {
|
|
109
178
|
// Default Mongo IDs cannot be updated. The Mongo library handles
|
|
110
179
|
// this automatically.
|
|
@@ -120,8 +189,7 @@ export class MongoDbAdapter<
|
|
|
120
189
|
return data
|
|
121
190
|
}
|
|
122
191
|
|
|
123
|
-
async
|
|
124
|
-
const { Model } = this.getOptions(params)
|
|
192
|
+
async _get(id: AdapterId, params: ServiceParams = {} as ServiceParams): Promise<Result> {
|
|
125
193
|
const {
|
|
126
194
|
query,
|
|
127
195
|
filters: { $select }
|
|
@@ -139,7 +207,7 @@ export class MongoDbAdapter<
|
|
|
139
207
|
...projection
|
|
140
208
|
}
|
|
141
209
|
|
|
142
|
-
return
|
|
210
|
+
return this.getModel(params)
|
|
143
211
|
.then((model) => model.findOne(query, findOptions))
|
|
144
212
|
.then((data) => {
|
|
145
213
|
if (data == null) {
|
|
@@ -151,57 +219,50 @@ export class MongoDbAdapter<
|
|
|
151
219
|
.catch(errorHandler)
|
|
152
220
|
}
|
|
153
221
|
|
|
154
|
-
async
|
|
155
|
-
async
|
|
156
|
-
async
|
|
157
|
-
async
|
|
222
|
+
async _find(params?: ServiceParams & { paginate?: PaginationOptions }): Promise<Paginated<Result>>
|
|
223
|
+
async _find(params?: ServiceParams & { paginate: false }): Promise<Result[]>
|
|
224
|
+
async _find(params?: ServiceParams): Promise<Paginated<Result> | Result[]>
|
|
225
|
+
async _find(params: ServiceParams = {} as ServiceParams): Promise<Paginated<Result> | Result[]> {
|
|
226
|
+
const { paginate, useEstimatedDocumentCount } = this.getOptions(params)
|
|
158
227
|
const { filters, query } = this.filterQuery(null, params)
|
|
159
|
-
const
|
|
160
|
-
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
if (filters.$limit !== undefined) {
|
|
173
|
-
q.limit(filters.$limit)
|
|
228
|
+
const useAggregation = !params.mongodb && filters.$limit !== 0
|
|
229
|
+
|
|
230
|
+
const countDocuments = async () => {
|
|
231
|
+
if (paginate && paginate.default) {
|
|
232
|
+
const model = await this.getModel(params)
|
|
233
|
+
if (useEstimatedDocumentCount && typeof model.estimatedDocumentCount === 'function') {
|
|
234
|
+
return model.estimatedDocumentCount()
|
|
235
|
+
} else {
|
|
236
|
+
return model.countDocuments(query, { ...params.mongodb })
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return Promise.resolve(0)
|
|
174
240
|
}
|
|
175
241
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
242
|
+
const [request, total] = await Promise.all([
|
|
243
|
+
useAggregation ? this.aggregateRaw(params) : this.findRaw(params),
|
|
244
|
+
countDocuments()
|
|
245
|
+
])
|
|
179
246
|
|
|
180
|
-
const
|
|
247
|
+
const page = {
|
|
181
248
|
total,
|
|
182
249
|
limit: filters.$limit,
|
|
183
250
|
skip: filters.$skip || 0,
|
|
184
|
-
data: filters.$limit === 0 ? [] : ((await
|
|
185
|
-
})
|
|
186
|
-
|
|
187
|
-
if (paginate && paginate.default) {
|
|
188
|
-
if (useEstimatedDocumentCount && typeof model.estimatedDocumentCount === 'function') {
|
|
189
|
-
return model.estimatedDocumentCount().then(runQuery)
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
return model.countDocuments(query, findOptions).then(runQuery)
|
|
251
|
+
data: filters.$limit === 0 ? [] : ((await request.toArray()) as any as Result[])
|
|
193
252
|
}
|
|
194
253
|
|
|
195
|
-
return
|
|
254
|
+
return paginate && paginate.default ? page : page.data
|
|
196
255
|
}
|
|
197
256
|
|
|
198
|
-
async
|
|
199
|
-
async
|
|
200
|
-
async
|
|
201
|
-
async
|
|
257
|
+
async _create(data: Data, params?: ServiceParams): Promise<Result>
|
|
258
|
+
async _create(data: Data[], params?: ServiceParams): Promise<Result[]>
|
|
259
|
+
async _create(data: Data | Data[], _params?: ServiceParams): Promise<Result | Result[]>
|
|
260
|
+
async _create(
|
|
261
|
+
data: Data | Data[],
|
|
262
|
+
params: ServiceParams = {} as ServiceParams
|
|
263
|
+
): Promise<Result | Result[]> {
|
|
202
264
|
const writeOptions = params.mongodb
|
|
203
|
-
const
|
|
204
|
-
const model = await Promise.resolve(Model)
|
|
265
|
+
const model = await this.getModel(params)
|
|
205
266
|
const setId = (item: any) => {
|
|
206
267
|
const entry = Object.assign({}, item)
|
|
207
268
|
|
|
@@ -231,13 +292,20 @@ export class MongoDbAdapter<
|
|
|
231
292
|
return promise.then(select(params, this.id)).catch(errorHandler)
|
|
232
293
|
}
|
|
233
294
|
|
|
234
|
-
async
|
|
235
|
-
async
|
|
236
|
-
async
|
|
237
|
-
async
|
|
295
|
+
async _patch(id: null, data: PatchData, params?: ServiceParams): Promise<Result[]>
|
|
296
|
+
async _patch(id: AdapterId, data: PatchData, params?: ServiceParams): Promise<Result>
|
|
297
|
+
async _patch(id: NullableAdapterId, data: PatchData, _params?: ServiceParams): Promise<Result | Result[]>
|
|
298
|
+
async _patch(
|
|
299
|
+
id: NullableAdapterId,
|
|
300
|
+
_data: PatchData,
|
|
301
|
+
params: ServiceParams = {} as ServiceParams
|
|
302
|
+
): Promise<Result | Result[]> {
|
|
303
|
+
if (id === null && !this.allowsMulti('patch', params)) {
|
|
304
|
+
throw new MethodNotAllowed('Can not patch multiple entries')
|
|
305
|
+
}
|
|
306
|
+
|
|
238
307
|
const data = this.normalizeId(id, _data)
|
|
239
|
-
const
|
|
240
|
-
const model = await Promise.resolve(Model)
|
|
308
|
+
const model = await this.getModel(params)
|
|
241
309
|
const {
|
|
242
310
|
query,
|
|
243
311
|
filters: { $select }
|
|
@@ -257,7 +325,7 @@ export class MongoDbAdapter<
|
|
|
257
325
|
|
|
258
326
|
return current
|
|
259
327
|
}, {} as any)
|
|
260
|
-
const originalIds = await this
|
|
328
|
+
const originalIds = await this._findOrGet(id, {
|
|
261
329
|
...params,
|
|
262
330
|
query: {
|
|
263
331
|
...query,
|
|
@@ -278,26 +346,35 @@ export class MongoDbAdapter<
|
|
|
278
346
|
|
|
279
347
|
await model.updateMany(query, modifier, updateOptions)
|
|
280
348
|
|
|
281
|
-
return this
|
|
349
|
+
return this._findOrGet(id, findParams).catch(errorHandler)
|
|
282
350
|
}
|
|
283
351
|
|
|
284
|
-
async
|
|
285
|
-
|
|
286
|
-
|
|
352
|
+
async _update(id: AdapterId, data: Data, params: ServiceParams = {} as ServiceParams): Promise<Result> {
|
|
353
|
+
if (id === null || Array.isArray(data)) {
|
|
354
|
+
throw new BadRequest("You can not replace multiple instances. Did you mean 'patch'?")
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
const model = await this.getModel(params)
|
|
287
358
|
const { query } = this.filterQuery(id, params)
|
|
288
359
|
const replaceOptions = { ...params.mongodb }
|
|
289
360
|
|
|
290
361
|
await model.replaceOne(query, this.normalizeId(id, data), replaceOptions)
|
|
291
362
|
|
|
292
|
-
return this
|
|
363
|
+
return this._findOrGet(id, params).catch(errorHandler)
|
|
293
364
|
}
|
|
294
365
|
|
|
295
|
-
async
|
|
296
|
-
async
|
|
297
|
-
async
|
|
298
|
-
async
|
|
299
|
-
|
|
300
|
-
|
|
366
|
+
async _remove(id: null, params?: ServiceParams): Promise<Result[]>
|
|
367
|
+
async _remove(id: AdapterId, params?: ServiceParams): Promise<Result>
|
|
368
|
+
async _remove(id: NullableAdapterId, _params?: ServiceParams): Promise<Result | Result[]>
|
|
369
|
+
async _remove(
|
|
370
|
+
id: NullableAdapterId | ObjectId,
|
|
371
|
+
params: ServiceParams = {} as ServiceParams
|
|
372
|
+
): Promise<Result | Result[]> {
|
|
373
|
+
if (id === null && !this.allowsMulti('remove', params)) {
|
|
374
|
+
throw new MethodNotAllowed('Can not remove multiple entries')
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
const model = await this.getModel(params)
|
|
301
378
|
const {
|
|
302
379
|
query,
|
|
303
380
|
filters: { $select }
|
|
@@ -312,7 +389,7 @@ export class MongoDbAdapter<
|
|
|
312
389
|
}
|
|
313
390
|
}
|
|
314
391
|
|
|
315
|
-
return this
|
|
392
|
+
return this._findOrGet(id, findParams)
|
|
316
393
|
.then(async (items) => {
|
|
317
394
|
await model.deleteMany(query, deleteOptions)
|
|
318
395
|
return items
|
package/src/index.ts
CHANGED
|
@@ -1,44 +1,71 @@
|
|
|
1
1
|
import { PaginationOptions } from '@feathersjs/adapter-commons'
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { MethodNotAllowed } from '@feathersjs/errors/lib'
|
|
3
|
+
import { Paginated, Params } from '@feathersjs/feathers'
|
|
4
|
+
import { AdapterId, MongoDbAdapter, MongoDBAdapterParams, NullableAdapterId } from './adapter'
|
|
4
5
|
|
|
5
6
|
export * from './adapter'
|
|
6
7
|
export * from './error-handler'
|
|
8
|
+
export * from './resolvers'
|
|
7
9
|
|
|
8
|
-
export class MongoDBService<
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
async find(params?:
|
|
15
|
-
async find(params?:
|
|
16
|
-
|
|
10
|
+
export class MongoDBService<
|
|
11
|
+
Result = any,
|
|
12
|
+
Data = Partial<Result>,
|
|
13
|
+
ServiceParams extends Params<any> = MongoDBAdapterParams,
|
|
14
|
+
PatchData = Partial<Data>
|
|
15
|
+
> extends MongoDbAdapter<Result, Data, ServiceParams, PatchData> {
|
|
16
|
+
async find(params?: ServiceParams & { paginate?: PaginationOptions }): Promise<Paginated<Result>>
|
|
17
|
+
async find(params?: ServiceParams & { paginate: false }): Promise<Result[]>
|
|
18
|
+
async find(params?: ServiceParams): Promise<Paginated<Result> | Result[]>
|
|
19
|
+
async find(params?: ServiceParams): Promise<Paginated<Result> | Result[]> {
|
|
20
|
+
return this._find({
|
|
21
|
+
...params,
|
|
22
|
+
query: await this.sanitizeQuery(params)
|
|
23
|
+
})
|
|
17
24
|
}
|
|
18
25
|
|
|
19
|
-
async get(id:
|
|
20
|
-
return this._get(id,
|
|
26
|
+
async get(id: AdapterId, params?: ServiceParams): Promise<Result> {
|
|
27
|
+
return this._get(id, {
|
|
28
|
+
...params,
|
|
29
|
+
query: await this.sanitizeQuery(params)
|
|
30
|
+
})
|
|
21
31
|
}
|
|
22
32
|
|
|
23
|
-
async create(data:
|
|
24
|
-
async create(data:
|
|
25
|
-
async create(data:
|
|
33
|
+
async create(data: Data, params?: ServiceParams): Promise<Result>
|
|
34
|
+
async create(data: Data[], params?: ServiceParams): Promise<Result[]>
|
|
35
|
+
async create(data: Data | Data[], params?: ServiceParams): Promise<Result | Result[]> {
|
|
36
|
+
if (Array.isArray(data) && !this.allowsMulti('create', params)) {
|
|
37
|
+
throw new MethodNotAllowed('Can not create multiple entries')
|
|
38
|
+
}
|
|
39
|
+
|
|
26
40
|
return this._create(data, params)
|
|
27
41
|
}
|
|
28
42
|
|
|
29
|
-
async update(id:
|
|
30
|
-
return this._update(id, data,
|
|
43
|
+
async update(id: AdapterId, data: Data, params?: ServiceParams): Promise<Result> {
|
|
44
|
+
return this._update(id, data, {
|
|
45
|
+
...params,
|
|
46
|
+
query: await this.sanitizeQuery(params)
|
|
47
|
+
})
|
|
31
48
|
}
|
|
32
49
|
|
|
33
|
-
async patch(id:
|
|
34
|
-
async patch(id:
|
|
35
|
-
async patch(id:
|
|
36
|
-
|
|
50
|
+
async patch(id: null, data: PatchData, params?: ServiceParams): Promise<Result[]>
|
|
51
|
+
async patch(id: AdapterId, data: PatchData, params?: ServiceParams): Promise<Result>
|
|
52
|
+
async patch(id: NullableAdapterId, data: PatchData, params?: ServiceParams): Promise<Result | Result[]> {
|
|
53
|
+
const { $limit, ...query } = await this.sanitizeQuery(params)
|
|
54
|
+
|
|
55
|
+
return this._patch(id, data, {
|
|
56
|
+
...params,
|
|
57
|
+
query
|
|
58
|
+
})
|
|
37
59
|
}
|
|
38
60
|
|
|
39
|
-
async remove(id:
|
|
40
|
-
async remove(id: null, params?:
|
|
41
|
-
async remove(id:
|
|
42
|
-
|
|
61
|
+
async remove(id: AdapterId, params?: ServiceParams): Promise<Result>
|
|
62
|
+
async remove(id: null, params?: ServiceParams): Promise<Result[]>
|
|
63
|
+
async remove(id: NullableAdapterId, params?: ServiceParams): Promise<Result | Result[]> {
|
|
64
|
+
const { $limit, ...query } = await this.sanitizeQuery(params)
|
|
65
|
+
|
|
66
|
+
return this._remove(id, {
|
|
67
|
+
...params,
|
|
68
|
+
query
|
|
69
|
+
})
|
|
43
70
|
}
|
|
44
71
|
}
|
package/src/resolvers.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ObjectId } from 'mongodb'
|
|
2
|
+
|
|
3
|
+
export type ObjectIdParam = string | number | ObjectId
|
|
4
|
+
|
|
5
|
+
export type IdQueryObject<T> = {
|
|
6
|
+
$in?: T[]
|
|
7
|
+
$nin?: T[]
|
|
8
|
+
$ne?: T
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const toObjectId = (value: ObjectIdParam) => new ObjectId(value)
|
|
12
|
+
|
|
13
|
+
export async function resolveObjectId(value: ObjectIdParam) {
|
|
14
|
+
return toObjectId(value)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export async function resolveQueryObjectId(
|
|
18
|
+
value: IdQueryObject<ObjectIdParam>
|
|
19
|
+
): Promise<IdQueryObject<ObjectId>>
|
|
20
|
+
export async function resolveQueryObjectId(value: ObjectIdParam): Promise<ObjectId>
|
|
21
|
+
export async function resolveQueryObjectId(value: ObjectIdParam | IdQueryObject<ObjectIdParam>) {
|
|
22
|
+
if (!value) {
|
|
23
|
+
return undefined
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (typeof value === 'string' || typeof value === 'number' || value instanceof ObjectId) {
|
|
27
|
+
return toObjectId(value)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const convertedObject: IdQueryObject<ObjectId> = {}
|
|
31
|
+
|
|
32
|
+
if (Array.isArray(value.$in)) {
|
|
33
|
+
convertedObject.$in = value.$in.map(toObjectId)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (Array.isArray(value.$nin)) {
|
|
37
|
+
convertedObject.$nin = value.$nin.map(toObjectId)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (value.$ne !== undefined) {
|
|
41
|
+
convertedObject.$ne = toObjectId(value.$ne)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return convertedObject
|
|
45
|
+
}
|