我对Parse很陌生。
我使用以下代码建立了数据库:
var Class = Parse.Object.extend("Class");
var Team = Parse.Object.extend("Team");
var Student = Parse.Object.extend("Student");
var newClass = new Class();
newClass.set("name", className);
newClass.set("code", classCode);
newClass.set("creator", currentUser);
var classACL = new Parse.ACL(currentUser);
classACL.setPublicReadAccess(true);
newClass.setACL(classACL);
newClass.save();
for (var i = 0; i < teamNames.length; i++) {
var team = new Team();
team.set("name", teamNames[i]);
var teamACL = new Parse.ACL(currentUser);
teamACL.setPublicReadAccess(true);
team.setACL(teamACL);
team.save();
for (var j = 0; j < studentNames[i].length; j++) {
if (studentNames[i][j]) {
var student = new Student();
student.set("name", studentNames[i][j]);
student.set("parent", team);
student.save();
}
}
team.set("parent", newClass);
team.save();
}
newClass.save(null, {
success: function(newClass) {
//success
},
error: function(newClass, error) {
//fail
}
});
在这里Class
,Team
和Student
被建模为一对多关系。
现在,当学生使用他或她自己的用户帐户注册课程时,相应Student
的user
列将设置为当前用户。
然后,我要列出所有creator
其学生user
列之一(如果存在)等于或的类currentUser
。
如何创建在Parse中引用多个类的查询(或如何优化数据库,以使这种查询尽可能高效-无需创建两个单独的查询?)
任何帮助表示赞赏。
澄清:
我知道我可以按照Parse docs中的描述进行“或”查询(我应该在问题中对此进行说明),但是,我的问题是关于关系数据(由指向父项的指针类型属性定义)。在这里,我需要user是属于Team的Student实例的属性,然后属于Class,并且我只想过滤具有其creator属性或其子孙(Student实例)用户之一的Class对象属性等于currentUser,有效地仅列出您创建或注册为学生的课程。
由于当前数据库架构具有嵌套指针,因此没有简单的方法就可以对其进行调整。
在Class
课堂上,添加一个Relation
或Array
字段以包含对Student
/User
对象的引用。如果您将其User
用作对象指针,则一开始就不需要查找Student
。
我假设您在课堂上有students
新Array
领域Class
。students
包含User
对象。
var user = Parse.User.current();
var studentQuery = new Parse.Query(Class);
var creatorQuery = new Parse.Query(Class);
studentQuery.equalTo("students", user);
creatorQuery.equalTo("creator", user);
var query = Parse.Query.or(studentQuery, creatorQuery);
query.find().then(function(objects){
// Proceed with the results
},function(error){
// Handle error
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句