Skip to content

Commit 8fd0d43

Browse files
committed
Stable Version 0.2.3.
Fixes #8.
1 parent 3290853 commit 8fd0d43

10 files changed

+78
-176
lines changed

Diff for: CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
##### 0.2.3 - 07 April 2015
2+
3+
###### Backwards compatible bug fixes
4+
- #Added better support for
5+
16
##### 0.2.2 - 26 March 2015
27

38
###### Backwards compatible bug fixes

Diff for: Gruntfile.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ module.exports = function (grunt) {
3232
mochaTest: {
3333
all: {
3434
options: {
35-
timeout: 20000,
35+
timeout: 2000,
3636
reporter: 'spec'
3737
},
3838
src: ['mocha.start.js', 'test/**/*.js']

Diff for: dist/js-data-mongodb.js

+26-124
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,11 @@ module.exports =
5959

6060
var keys = _interopRequire(__webpack_require__(4));
6161

62-
var omit = _interopRequire(__webpack_require__(7));
62+
var omit = _interopRequire(__webpack_require__(5));
6363

64-
var map = _interopRequire(__webpack_require__(5));
64+
var map = _interopRequire(__webpack_require__(6));
6565

66-
var isEmpty = _interopRequire(__webpack_require__(6));
66+
var isEmpty = _interopRequire(__webpack_require__(7));
6767

6868
var DSUtils = JSData.DSUtils;
6969
var deepMixIn = DSUtils.deepMixIn;
@@ -252,6 +252,7 @@ module.exports =
252252
} else if (!r) {
253253
reject(new Error("Not Found!"));
254254
} else {
255+
r._id = r._id.valueOf();
255256
resolve(r);
256257
}
257258
});
@@ -270,6 +271,9 @@ module.exports =
270271
if (err) {
271272
reject(err);
272273
} else {
274+
r.forEach(function (_r) {
275+
_r._id = _r._id.valueOf();
276+
});
273277
resolve(r);
274278
}
275279
});
@@ -283,11 +287,17 @@ module.exports =
283287
attrs = removeCircular(omit(attrs, resourceConfig.relationFields || []));
284288
return this.getClient().then(function (client) {
285289
return new DSUtils.Promise(function (resolve, reject) {
286-
client.collection(resourceConfig.table || underscore(resourceConfig.name)).insert(attrs, options, function (err, r) {
290+
var collection = client.collection(resourceConfig.table || underscore(resourceConfig.name));
291+
var method = collection.insertOne ? DSUtils.isArray(attrs) ? "insertMany" : "insertOne" : "insert";
292+
collection[method](attrs, options, function (err, r) {
287293
if (err) {
288294
reject(err);
289295
} else {
290-
resolve(r[0]);
296+
r = r.ops ? r.ops : r;
297+
r.forEach(function (_r) {
298+
_r._id = _r._id.valueOf();
299+
});
300+
resolve(DSUtils.isArray(attrs) ? r : r[0]);
291301
}
292302
});
293303
});
@@ -305,7 +315,8 @@ module.exports =
305315
return new DSUtils.Promise(function (resolve, reject) {
306316
var params = {};
307317
params[resourceConfig.idAttribute] = id;
308-
client.collection(resourceConfig.table || underscore(resourceConfig.name)).update(params, { $set: attrs }, options, function (err) {
318+
var collection = client.collection(resourceConfig.table || underscore(resourceConfig.name));
319+
collection[collection.updateOne ? "updateOne" : "update"](params, { $set: attrs }, options, function (err) {
309320
if (err) {
310321
reject(err);
311322
} else {
@@ -337,7 +348,8 @@ module.exports =
337348
return item[resourceConfig.idAttribute];
338349
});
339350
return new DSUtils.Promise(function (resolve, reject) {
340-
client.collection(resourceConfig.table || underscore(resourceConfig.name)).update(query, queryOptions, _options, function (err) {
351+
var collection = client.collection(resourceConfig.table || underscore(resourceConfig.name));
352+
collection[collection.updateMany ? "updateMany" : "update"](query, queryOptions, _options, function (err) {
341353
if (err) {
342354
reject(err);
343355
} else {
@@ -362,7 +374,8 @@ module.exports =
362374
return new DSUtils.Promise(function (resolve, reject) {
363375
var params = {};
364376
params[resourceConfig.idAttribute] = id;
365-
client.collection(resourceConfig.table || underscore(resourceConfig.name)).remove(params, options, function (err) {
377+
var collection = client.collection(resourceConfig.table || underscore(resourceConfig.name));
378+
collection[collection.deleteOne ? "deleteOne" : "remove"](params, options, function (err) {
366379
if (err) {
367380
reject(err);
368381
} else {
@@ -382,7 +395,8 @@ module.exports =
382395
deepMixIn(options, _this.getQueryOptions(resourceConfig, params));
383396
var query = _this.getQuery(resourceConfig, params);
384397
return new DSUtils.Promise(function (resolve, reject) {
385-
client.collection(resourceConfig.table || underscore(resourceConfig.name)).remove(query, options, function (err) {
398+
var collection = client.collection(resourceConfig.table || underscore(resourceConfig.name));
399+
collection[collection.deleteMany ? "deleteMany" : "remove"](query, options, function (err) {
386400
if (err) {
387401
reject(err);
388402
} else {
@@ -428,131 +442,19 @@ module.exports =
428442
/* 5 */
429443
/***/ function(module, exports, __webpack_require__) {
430444

431-
module.exports = require("mout/array/map");
445+
module.exports = require("mout/object/omit");
432446

433447
/***/ },
434448
/* 6 */
435449
/***/ function(module, exports, __webpack_require__) {
436450

437-
module.exports = require("mout/lang/isEmpty");
451+
module.exports = require("mout/array/map");
438452

439453
/***/ },
440454
/* 7 */
441455
/***/ function(module, exports, __webpack_require__) {
442456

443-
var slice = __webpack_require__(8);
444-
var contains = __webpack_require__(9);
445-
446-
/**
447-
* Return a copy of the object, filtered to only contain properties except the blacklisted keys.
448-
*/
449-
function omit(obj, var_keys){
450-
var keys = typeof arguments[1] !== 'string'? arguments[1] : slice(arguments, 1),
451-
out = {};
452-
453-
for (var property in obj) {
454-
if (obj.hasOwnProperty(property) && !contains(keys, property)) {
455-
out[property] = obj[property];
456-
}
457-
}
458-
return out;
459-
}
460-
461-
module.exports = omit;
462-
463-
464-
465-
466-
/***/ },
467-
/* 8 */
468-
/***/ function(module, exports, __webpack_require__) {
469-
470-
471-
472-
/**
473-
* Create slice of source array or array-like object
474-
*/
475-
function slice(arr, start, end){
476-
var len = arr.length;
477-
478-
if (start == null) {
479-
start = 0;
480-
} else if (start < 0) {
481-
start = Math.max(len + start, 0);
482-
} else {
483-
start = Math.min(start, len);
484-
}
485-
486-
if (end == null) {
487-
end = len;
488-
} else if (end < 0) {
489-
end = Math.max(len + end, 0);
490-
} else {
491-
end = Math.min(end, len);
492-
}
493-
494-
var result = [];
495-
while (start < end) {
496-
result.push(arr[start++]);
497-
}
498-
499-
return result;
500-
}
501-
502-
module.exports = slice;
503-
504-
505-
506-
507-
/***/ },
508-
/* 9 */
509-
/***/ function(module, exports, __webpack_require__) {
510-
511-
var indexOf = __webpack_require__(10);
512-
513-
/**
514-
* If array contains values.
515-
*/
516-
function contains(arr, val) {
517-
return indexOf(arr, val) !== -1;
518-
}
519-
module.exports = contains;
520-
521-
522-
523-
/***/ },
524-
/* 10 */
525-
/***/ function(module, exports, __webpack_require__) {
526-
527-
528-
529-
/**
530-
* Array.indexOf
531-
*/
532-
function indexOf(arr, item, fromIndex) {
533-
fromIndex = fromIndex || 0;
534-
if (arr == null) {
535-
return -1;
536-
}
537-
538-
var len = arr.length,
539-
i = fromIndex < 0 ? len + fromIndex : fromIndex;
540-
while (i < len) {
541-
// we iterate over sparse items since there is no way to make it
542-
// work properly on IE 7-8. see #64
543-
if (arr[i] === item) {
544-
return i;
545-
}
546-
547-
i++;
548-
}
549-
550-
return -1;
551-
}
552-
553-
module.exports = indexOf;
554-
555-
457+
module.exports = require("mout/lang/isEmpty");
556458

557459
/***/ }
558460
/******/ ]);

Diff for: package.json

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "js-data-mongodb",
33
"description": "MongoDB adapter for js-data.",
4-
"version": "0.2.2",
4+
"version": "0.2.3",
55
"homepage": "http://www.js-data.io/docs/dsmongodbadapter",
66
"repository": {
77
"type": "git",
@@ -51,7 +51,6 @@
5151
},
5252
"peerDependencies": {
5353
"js-data": ">=1.5.7",
54-
"mongodb": ">= 1.3.x < 2.x",
55-
"mquery": ">=1.3.x"
54+
"mongodb": ">= 1.3.x <= 2.x"
5655
}
5756
}

Diff for: src/index.js

+20-6
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ class DSMongoDBAdapter {
185185
} else if (!r) {
186186
reject(new Error('Not Found!'));
187187
} else {
188+
r._id = r._id.valueOf();
188189
resolve(r);
189190
}
190191
});
@@ -202,6 +203,9 @@ class DSMongoDBAdapter {
202203
if (err) {
203204
reject(err);
204205
} else {
206+
r.forEach(_r => {
207+
_r._id = _r._id.valueOf();
208+
});
205209
resolve(r);
206210
}
207211
});
@@ -214,11 +218,17 @@ class DSMongoDBAdapter {
214218
attrs = removeCircular(omit(attrs, resourceConfig.relationFields || []));
215219
return this.getClient().then(client => {
216220
return new DSUtils.Promise((resolve, reject) => {
217-
client.collection(resourceConfig.table || underscore(resourceConfig.name)).insert(attrs, options, (err, r) => {
221+
let collection = client.collection(resourceConfig.table || underscore(resourceConfig.name));
222+
let method = collection.insertOne ? DSUtils.isArray(attrs) ? 'insertMany' : 'insertOne' : 'insert';
223+
collection[method](attrs, options, (err, r) => {
218224
if (err) {
219225
reject(err);
220226
} else {
221-
resolve(r[0]);
227+
r = r.ops ? r.ops : r;
228+
r.forEach(_r => {
229+
_r._id = _r._id.valueOf();
230+
});
231+
resolve(DSUtils.isArray(attrs) ? r : r[0]);
222232
}
223233
});
224234
});
@@ -233,7 +243,8 @@ class DSMongoDBAdapter {
233243
return new DSUtils.Promise((resolve, reject) => {
234244
let params = {};
235245
params[resourceConfig.idAttribute] = id;
236-
client.collection(resourceConfig.table || underscore(resourceConfig.name)).update(params, { $set: attrs }, options, err => {
246+
let collection = client.collection(resourceConfig.table || underscore(resourceConfig.name));
247+
collection[collection.updateOne ? 'updateOne' : 'update'](params, { $set: attrs }, options, err => {
237248
if (err) {
238249
reject(err);
239250
} else {
@@ -258,7 +269,8 @@ class DSMongoDBAdapter {
258269
return this.findAll(resourceConfig, params, options).then(items => {
259270
ids = map(items, item => item[resourceConfig.idAttribute]);
260271
return new DSUtils.Promise((resolve, reject) => {
261-
client.collection(resourceConfig.table || underscore(resourceConfig.name)).update(query, queryOptions, _options, err => {
272+
let collection = client.collection(resourceConfig.table || underscore(resourceConfig.name));
273+
collection[collection.updateMany ? 'updateMany' : 'update'](query, queryOptions, _options, err => {
262274
if (err) {
263275
reject(err);
264276
} else {
@@ -282,7 +294,8 @@ class DSMongoDBAdapter {
282294
return new DSUtils.Promise((resolve, reject) => {
283295
let params = {};
284296
params[resourceConfig.idAttribute] = id;
285-
client.collection(resourceConfig.table || underscore(resourceConfig.name)).remove(params, options, err => {
297+
let collection = client.collection(resourceConfig.table || underscore(resourceConfig.name));
298+
collection[collection.deleteOne ? 'deleteOne' : 'remove'](params, options, err => {
286299
if (err) {
287300
reject(err);
288301
} else {
@@ -299,7 +312,8 @@ class DSMongoDBAdapter {
299312
deepMixIn(options, this.getQueryOptions(resourceConfig, params));
300313
let query = this.getQuery(resourceConfig, params);
301314
return new DSUtils.Promise((resolve, reject) => {
302-
client.collection(resourceConfig.table || underscore(resourceConfig.name)).remove(query, options, err => {
315+
let collection = client.collection(resourceConfig.table || underscore(resourceConfig.name));
316+
collection[collection.deleteMany ? 'deleteMany' : 'remove'](query, options, err => {
303317
if (err) {
304318
reject(err);
305319
} else {

Diff for: test/create.spec.js

+5-10
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
describe('DSMongoDBAdapter#create', function () {
2-
it('should create a user in MongoDB', function (done) {
2+
it('should create a user in MongoDB', function () {
33
var id;
4-
adapter.create(User, { name: 'John' }).then(function (user) {
4+
return adapter.create(User, { name: 'John' }).then(function (user) {
55
id = user._id;
66
assert.equal(user.name, 'John');
77
assert.isDefined(user._id);
@@ -15,14 +15,9 @@ describe('DSMongoDBAdapter#create', function () {
1515
})
1616
.then(function (user) {
1717
assert.isFalse(!!user);
18-
return adapter.find(User, id);
19-
})
20-
.then(function () {
21-
done('Should not have reached here!');
22-
})
23-
.catch(function (err) {
24-
assert.equal(err.message, 'Not Found!');
25-
done();
18+
return adapter.find(User, id).catch(function (err) {
19+
assert.equal(err.message, 'Not Found!');
20+
});
2621
});
2722
});
2823
});

Diff for: test/destroy.spec.js

+5-10
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,16 @@
11
describe('DSMongoDBAdapter#destroy', function () {
2-
it('should destroy a user from MongoDB', function (done) {
2+
it('should destroy a user from MongoDB', function () {
33
var id;
4-
adapter.create(User, { name: 'John' })
4+
return adapter.create(User, { name: 'John' })
55
.then(function (user) {
66
id = user._id;
77
return adapter.destroy(User, user._id);
88
})
99
.then(function (user) {
1010
assert.isFalse(!!user);
11-
return adapter.find(User, id);
12-
})
13-
.then(function () {
14-
done('Should not have reached here!');
15-
})
16-
.catch(function (err) {
17-
assert.equal(err.message, 'Not Found!');
18-
done();
11+
return adapter.find(User, id).catch(function (err) {
12+
assert.equal(err.message, 'Not Found!');
13+
});
1914
});
2015
});
2116
});

0 commit comments

Comments
 (0)