使用Parse JavaScript定义两个用户之间的相互关系 [英] Define mutual relation between two user with Parse JavaScript

查看:74
本文介绍了使用Parse JavaScript定义两个用户之间的相互关系的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在当前用户和另一个用户(userB)之间设置一个简单的关系.我可以创建sampleRelation,并且当前用户显示在数据浏览器的userB的sampleRelation列中,但是当前用户的关系列表为空,即使它应该显示userB的名称. Javascript对我来说是完全未知的,我必须使用它,因为CloudCode最初是使用iOS SDK的,因此我将CloudCode函数称为:

I would like to set a simple relation between the current user and another user (userB). I can create the sampleRelation, and current user shown up at userB's sampleRelation column in the data browser, but current user's relation list is blank, even though it should display userB's name. Javascript is totally unknown for me, i have to use it because the CloudCode, originally i'm using the iOS SDK where i call this CloudCode function like this:

[query getFirstObjectInBackgroundWithBlock:^(PFObject *object, NSError *error) {
        if (object) {
PFUser *user = (PFUser *)object;          
[PFCloud callFunction:@"editUser" withParameters:@{@"userId": user.objectId}]; }];

这是JavaScript实现:

and here is the JavaScript implementation:

Parse.Cloud.define('editUser', function(request, response) {
               var userId = request.params.userId;

               var User = Parse.Object.extend('_User'),
               user = new User({ objectId: userId });

               var currentUser = request.user;

               var relation = user.relation("sampleRelation");
               relation.add(currentUser);

               currentUser.save();

               Parse.Cloud.useMasterKey();
               user.save().then(function(user) {
                                response.success(user);
                                }, function(error) {
                                response.error(error)
                                });
               });

我确定我需要以某种方式保存当前用户的关系,因此我添加了currentUser.save();行,但没有任何更改.我无法弄清楚我错过了要实现的东西,或者现有的代码隐藏了该错误.

I'm sure that somehow i need to save the relation for the current user, therefore i added the currentUser.save(); line, but nothing changed. I can't figure out that i missed something to implement or the existing code hides the bug.

我的尝试基于蒂莫西的答案.

My try based on Timothy's answer.

Parse.Cloud.define('editUser', function(request, response) {
               var userId = request.params.userId;

               var User = Parse.Object.extend('_User'),
               user = new User({ objectId: userId });

               var currentUser = request.user;

               var relation = user.relation("sampleRelation");

               relation.add(currentUser);

               Parse.Cloud.useMasterKey();
               var userQuery = new Parse.Query(Parse.User);
               userQuery.get(request.params.userId)
               .then(function (user) {
                     var relation = user.relation("sampleRelation");
                     relation.add(request.user);
                     // chain the promise
                     return user.save();
                     ).then(function (user) {
                            response.success(user);
                            }, function (error) {
                            response.error(error);
                            });

这是我得到的错误:

Update failed with Could not load triggers.  The error was Uncaught SyntaxError: Unexpected token . in main.js:28

第二次更新

Parse.Cloud.useMasterKey();
var userQuery = new Parse.Query(Parse.User);
userQuery.get(request.params.userId)
.then(function (user) {
      var relation = user.relation("sampleRelation");
      relation.add(request.user);
      // chain the promise
      return user.save();
      }).then(function (user) {
              response.success(user);
              }, function (error) {
              response.error(error);
              });

推荐答案

您没有更改currentUser,因此调用currentUser.save()不会执行任何操作.

You aren't changing the currentUser so calling currentUser.save() will not do anything.

此外,在获取现有用户时,您还应该执行以下操作:

Also when getting an existing user you should do the following:

Parse.Cloud.define('editUser', function(request, response) {
    Parse.Cloud.useMasterKey();

    var userQuery = new Parse.Query(Parse.User);

    userQuery.get(request.params.userId)
    .then(function (user) {
        var relation = user.relation("sampleRelation");
        relation.add(request.user);
        // chain the promise
        return user.save();
    }).then(function (user) {
        var currentUser = request.user;
        var relation = currentUser.relation("sampleRelation");
        relation.add(user);
        // chain the new promise
        return currentUser.save();
    }).then(function () {
        response.success();
    }, function (error) {
        response.error(error);
    });
});

这篇关于使用Parse JavaScript定义两个用户之间的相互关系的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆