Skip to content

Commit d872f52

Browse files
committed
backbone style is BAD!
1 parent 43f014a commit d872f52

File tree

2 files changed

+72
-82
lines changed

2 files changed

+72
-82
lines changed

spec/ParseRelation.spec.js

+48-58
Original file line numberDiff line numberDiff line change
@@ -254,46 +254,40 @@ describe('Parse.Relation testing', () => {
254254
childObjects.push(new ChildObject({x: i}));
255255
}
256256

257-
Parse.Object.saveAll(childObjects, {
258-
success: function() {
259-
var ParentObject = Parse.Object.extend("ParentObject");
260-
var parent = new ParentObject();
261-
parent.set("x", 4);
262-
var relation = parent.relation("child");
263-
relation.add(childObjects[0]);
264-
relation.add(childObjects[1]);
265-
relation.add(childObjects[2]);
266-
var parent2 = new ParentObject();
267-
parent2.set("x", 3);
268-
var relation2 = parent2.relation("child");
269-
relation2.add(childObjects[4]);
270-
relation2.add(childObjects[5]);
271-
relation2.add(childObjects[6]);
272-
273-
var otherChild2 = parent2.relation("otherChild");
274-
otherChild2.add(childObjects[0]);
275-
otherChild2.add(childObjects[1]);
276-
otherChild2.add(childObjects[2]);
257+
Parse.Object.saveAll(childObjects).then(() => {
258+
var ParentObject = Parse.Object.extend("ParentObject");
259+
var parent = new ParentObject();
260+
parent.set("x", 4);
261+
var relation = parent.relation("child");
262+
relation.add(childObjects[0]);
263+
relation.add(childObjects[1]);
264+
relation.add(childObjects[2]);
265+
var parent2 = new ParentObject();
266+
parent2.set("x", 3);
267+
var relation2 = parent2.relation("child");
268+
relation2.add(childObjects[4]);
269+
relation2.add(childObjects[5]);
270+
relation2.add(childObjects[6]);
271+
272+
var otherChild2 = parent2.relation("otherChild");
273+
otherChild2.add(childObjects[0]);
274+
otherChild2.add(childObjects[1]);
275+
otherChild2.add(childObjects[2]);
277276

278-
var parents = [];
279-
parents.push(parent);
280-
parents.push(parent2);
281-
Parse.Object.saveAll(parents, {
282-
success: function() {
283-
var query = new Parse.Query(ParentObject);
284-
var objects = [];
285-
objects.push(childObjects[0]);
286-
query.containedIn("child", objects);
287-
query.containedIn("otherChild", [childObjects[0]]);
288-
query.find({
289-
success: function(list) {
290-
equal(list.length, 2, "There should be 2 results");
291-
done();
292-
}
293-
});
294-
}
295-
});
296-
}
277+
var parents = [];
278+
parents.push(parent);
279+
parents.push(parent2);
280+
return Parse.Object.saveAll(parents);
281+
}).then(() => {
282+
var query = new Parse.Query(ParentObject);
283+
var objects = [];
284+
objects.push(childObjects[0]);
285+
query.containedIn("child", objects);
286+
query.containedIn("otherChild", [childObjects[0]]);
287+
return query.find();
288+
}).then((list) => {
289+
equal(list.length, 2, "There should be 2 results");
290+
done();
297291
});
298292
});
299293

@@ -304,8 +298,7 @@ describe('Parse.Relation testing', () => {
304298
childObjects.push(new ChildObject({x: i}));
305299
}
306300

307-
Parse.Object.saveAll(childObjects, {
308-
success: function() {
301+
Parse.Object.saveAll(childObjects).then(() => {
309302
var ParentObject = Parse.Object.extend("ParentObject");
310303
var parent = new ParentObject();
311304
parent.set("x", 4);
@@ -323,25 +316,22 @@ describe('Parse.Relation testing', () => {
323316
parents.push(parent2);
324317
parents.push(new ParentObject());
325318

326-
Parse.Object.saveAll(parents, {
327-
success: function() {
328-
var query1 = new Parse.Query(ParentObject);
329-
query1.containedIn("toChilds", [childObjects[2]]);
330-
var query2 = new Parse.Query(ParentObject);
331-
query2.equalTo("toChild", childObjects[2]);
332-
var query = Parse.Query.or(query1, query2);
333-
query.find({
334-
success: function(list) {
335-
list = list.filter(function(item){
336-
return item.id == parent.id || item.id == parent2.id;
337-
});
338-
equal(list.length, 2, "There should be 2 results");
339-
done();
340-
}
319+
return Parse.Object.saveAll(parents).then(() => {
320+
var query1 = new Parse.Query(ParentObject);
321+
query1.containedIn("toChilds", [childObjects[2]]);
322+
var query2 = new Parse.Query(ParentObject);
323+
query2.equalTo("toChild", childObjects[2]);
324+
var query = Parse.Query.or(query1, query2);
325+
return query.find().then((list) => {
326+
var objectIds = list.map(function(item){
327+
return item.id;
341328
});
342-
}
329+
expect(objectIds.indexOf(parent.id)).not.toBe(-1);
330+
expect(objectIds.indexOf(parent2.id)).not.toBe(-1);
331+
equal(list.length, 2, "There should be 2 results");
332+
done();
333+
});
343334
});
344-
}
345335
});
346336
});
347337

src/Controllers/DatabaseController.js

+24-24
Original file line numberDiff line numberDiff line change
@@ -408,31 +408,31 @@ DatabaseController.prototype.reduceInRelation = function(className, query, schem
408408
}));
409409
}
410410

411-
return Object.keys(query).reduce((promise, key) => {
412-
return promise.then(() => {
413-
if (query[key] &&
414-
(query[key]['$in'] || query[key].__type == 'Pointer')) {
415-
let t = schema.getExpectedType(className, key);
416-
let match = t ? t.match(/^relation<(.*)>$/) : false;
417-
if (!match) {
418-
return Promise.resolve(query);
419-
}
420-
let relatedClassName = match[1];
421-
let relatedIds;
422-
if (query[key]['$in']) {
423-
relatedIds = query[key]['$in'].map(r => r.objectId);
424-
} else {
425-
relatedIds = [query[key].objectId];
426-
}
427-
return this.owningIds(className, key, relatedIds).then((ids) => {
428-
delete query[key];
429-
query.objectId = Object.assign({'$in': []}, query.objectId);
430-
query.objectId['$in'] = query.objectId['$in'].concat(ids);
431-
return Promise.resolve(query);
432-
});
411+
let promises = Object.keys(query).map((key) => {
412+
if (query[key] && (query[key]['$in'] || query[key].__type == 'Pointer')) {
413+
let t = schema.getExpectedType(className, key);
414+
let match = t ? t.match(/^relation<(.*)>$/) : false;
415+
if (!match) {
416+
return Promise.resolve(query);
433417
}
434-
});
435-
}, Promise.resolve()).then(() => {
418+
let relatedClassName = match[1];
419+
let relatedIds;
420+
if (query[key]['$in']) {
421+
relatedIds = query[key]['$in'].map(r => r.objectId);
422+
} else {
423+
relatedIds = [query[key].objectId];
424+
}
425+
return this.owningIds(className, key, relatedIds).then((ids) => {
426+
delete query[key];
427+
query.objectId = Object.assign({'$in': []}, query.objectId);
428+
query.objectId['$in'] = query.objectId['$in'].concat(ids);
429+
return Promise.resolve(query);
430+
});
431+
}
432+
return Promise.resolve(query);
433+
})
434+
435+
return Promise.all(promises).then(() => {
436436
return Promise.resolve(query);
437437
})
438438
};

0 commit comments

Comments
 (0)