解析云权查询检索Friendslist而不是(像Instagram)
我有类“用户”默认的解析Dashboad。我也有班级“朋友”,我在这里存储用户之间的友谊: 有两列“toUser”和“fromUser”,它们显示了两个用户发送好友请求的人。这两列是指向用户类的指针(指针< _User>)。解析云权查询检索Friendslist而不是(像Instagram)
我的概念是检索两个列表: 1.好友列表,为用户的登录用户 2.用户列表(谁不是朋友与登录的用户)
什么是对的合适查询?
逻辑第一个不应该扫描所有的类用户,因为它可能被利用离子3应用程序和角4
的性能比较慢下来谢谢
你并不需要另一个类这样做,你需要的是在默认的用户类别的关系列
增加新的朋友,你只需要下面的代码
var friendtoadd
//this is the friend object from parse user class you want to add you can get it by anyway you want
var currentUser = Parse.User.current();
var relation = currentUser.relation("friends");
relation.add(friendtoadd)
currentUser.save();
检索的朋友阵列的登录的用户可以使用以下代码
var currentUser = Parse.User.current();
var friendRelation = currentUser.relation('friends');
var env = this
friendRelation.query().find({
success: function(users) {
for (var i = 0; i< users.length; i++) {
var object = users[i];
env.friends.push(object)
console.log(env.friends)
}
}
});
//你应该定义的朋友= [];在类
如果我明白你的问题的权利,你想找到你的朋友请求你sent
,或者你的received
。因为我不知道你在哪里与用户和他的朋友建立了关系。 这是代码,如果你想这样做使用云代码:
首先,我确认被保存在friendRequest
的参数:
Parse.Cloud.beforeSave("Friends", function(request, response){
var friendRequest = request.object;
if (!friendRequest.has("toUser") || !friendRequest.has("fromUser")) {
response.error("Invalid parameters");
return;
}
response.success();
});
然后我创建了两个云功能,一个用于检索sentRequests
:
Parse.Cloud.define("getSentRequests", function(request, response){
var query = new Parse.Query("Friends");
query.equalTo("fromUser", request.user);
if (!request.master) {
query.find({ sessionToken: request.user.getSessionToken() }).then(function(friends){
response.success(friends);
});
}else{
query.find({useMasterKey:true}).then(function(friends){
response.success(friends);
});
}
});
,你可以从一个登录的用户或使用masterKey,如果你想和其他查询是针对recievedRequests
称之为:
Parse.Cloud.define("getRecievedRequests", function(request, response){
var query = new Parse.Query("Friends");
query.equalTo("toUser", request.user);
if (!request.master) {
query.find({ sessionToken: request.user.getSessionToken() }).then(function(users){
response.success(users);
});
}else{
query.find({useMasterKey:true}).then(function(users){
response.success(users);
});
}
});
谢谢Abubakr。我附上图像更加水晶。表级“朋友”已经存储了朋友。谁发送了请求,谁收到了它。作为登录用户,我想检索我的朋友[链接](https:// imgur。com/a/XWWT8) – giorgionasis
对不起,我不熟悉离子3和角4,但有一点研究,我发现你可以调用函数名称并使用提供程序拦截结果,我不完全了解如何发布回答如果你找到正确的代码。 –
我知道如何调用云功能,但在此之前,我应该定义数据库的结构或查询的概念以检索我想要的东西 – giorgionasis
通过这种方式获取与当前用户不是朋友的用户列表是坏主意,因为他可能有0个朋友,在这种情况下,您将运行一个非常缓慢的查询来获取数据库的所有用户 –
谢谢你的马科斯,我明白了,但是我需要班级“朋友”,因为我从中检索了额外的信息,比如朋友请求发送的用户的推送和本地通知。并且你对所有用户的查询都是正确的,只想通过在用户输入用户名时筛选搜索用户来限制它,例如instagram。但是,怎么..?总的来说,我需要instagram的哲学 – giorgionasis