backbone style is BAD!

This commit is contained in:
Florent Vilmart
2016-03-02 20:28:00 -05:00
parent 43f014a47d
commit d872f52eff
2 changed files with 72 additions and 82 deletions

View File

@@ -254,8 +254,7 @@ describe('Parse.Relation testing', () => {
childObjects.push(new ChildObject({x: i})); childObjects.push(new ChildObject({x: i}));
} }
Parse.Object.saveAll(childObjects, { Parse.Object.saveAll(childObjects).then(() => {
success: function() {
var ParentObject = Parse.Object.extend("ParentObject"); var ParentObject = Parse.Object.extend("ParentObject");
var parent = new ParentObject(); var parent = new ParentObject();
parent.set("x", 4); parent.set("x", 4);
@@ -278,22 +277,17 @@ describe('Parse.Relation testing', () => {
var parents = []; var parents = [];
parents.push(parent); parents.push(parent);
parents.push(parent2); parents.push(parent2);
Parse.Object.saveAll(parents, { return Parse.Object.saveAll(parents);
success: function() { }).then(() => {
var query = new Parse.Query(ParentObject); var query = new Parse.Query(ParentObject);
var objects = []; var objects = [];
objects.push(childObjects[0]); objects.push(childObjects[0]);
query.containedIn("child", objects); query.containedIn("child", objects);
query.containedIn("otherChild", [childObjects[0]]); query.containedIn("otherChild", [childObjects[0]]);
query.find({ return query.find();
success: function(list) { }).then((list) => {
equal(list.length, 2, "There should be 2 results"); equal(list.length, 2, "There should be 2 results");
done(); done();
}
});
}
});
}
}); });
}); });
@@ -304,8 +298,7 @@ describe('Parse.Relation testing', () => {
childObjects.push(new ChildObject({x: i})); childObjects.push(new ChildObject({x: i}));
} }
Parse.Object.saveAll(childObjects, { Parse.Object.saveAll(childObjects).then(() => {
success: function() {
var ParentObject = Parse.Object.extend("ParentObject"); var ParentObject = Parse.Object.extend("ParentObject");
var parent = new ParentObject(); var parent = new ParentObject();
parent.set("x", 4); parent.set("x", 4);
@@ -323,25 +316,22 @@ describe('Parse.Relation testing', () => {
parents.push(parent2); parents.push(parent2);
parents.push(new ParentObject()); parents.push(new ParentObject());
Parse.Object.saveAll(parents, { return Parse.Object.saveAll(parents).then(() => {
success: function() {
var query1 = new Parse.Query(ParentObject); var query1 = new Parse.Query(ParentObject);
query1.containedIn("toChilds", [childObjects[2]]); query1.containedIn("toChilds", [childObjects[2]]);
var query2 = new Parse.Query(ParentObject); var query2 = new Parse.Query(ParentObject);
query2.equalTo("toChild", childObjects[2]); query2.equalTo("toChild", childObjects[2]);
var query = Parse.Query.or(query1, query2); var query = Parse.Query.or(query1, query2);
query.find({ return query.find().then((list) => {
success: function(list) { var objectIds = list.map(function(item){
list = list.filter(function(item){ return item.id;
return item.id == parent.id || item.id == parent2.id;
}); });
expect(objectIds.indexOf(parent.id)).not.toBe(-1);
expect(objectIds.indexOf(parent2.id)).not.toBe(-1);
equal(list.length, 2, "There should be 2 results"); equal(list.length, 2, "There should be 2 results");
done(); done();
}
}); });
}
}); });
}
}); });
}); });

View File

@@ -408,10 +408,8 @@ DatabaseController.prototype.reduceInRelation = function(className, query, schem
})); }));
} }
return Object.keys(query).reduce((promise, key) => { let promises = Object.keys(query).map((key) => {
return promise.then(() => { if (query[key] && (query[key]['$in'] || query[key].__type == 'Pointer')) {
if (query[key] &&
(query[key]['$in'] || query[key].__type == 'Pointer')) {
let t = schema.getExpectedType(className, key); let t = schema.getExpectedType(className, key);
let match = t ? t.match(/^relation<(.*)>$/) : false; let match = t ? t.match(/^relation<(.*)>$/) : false;
if (!match) { if (!match) {
@@ -431,8 +429,10 @@ DatabaseController.prototype.reduceInRelation = function(className, query, schem
return Promise.resolve(query); return Promise.resolve(query);
}); });
} }
}); return Promise.resolve(query);
}, Promise.resolve()).then(() => { })
return Promise.all(promises).then(() => {
return Promise.resolve(query); return Promise.resolve(query);
}) })
}; };