解析云代码。无法定义关系

时间:2015-10-23 12:16:54

标签: javascript parse-platform cloud

我从我的Android应用程序调用此函数,

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


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

var relation = Parse.Relation(user, 'friendRequests');
relation.add(request.user);

Parse.Cloud.useMasterKey();
user.save().then(function(user) {
    response.success("Successfully added friend Request");
}, function(error) {
    response.error("An error has occurred")
});

});

正在抛出错误类型

  

TypeError:无法在main.js:10:11

中调用undefined方法'add'

我对javascript相对较新,所以任何建议都会很棒。此外,关系friendRequests已经存在。

1 个答案:

答案 0 :(得分:0)

这应该有用。

Parse.Cloud.define('addFriendRequest', function(request, response) {
Parse.Cloud.useMasterKey();
var userObjectId = request.params.userObjectId;
var user = Parse.User.createWithoutData(userObjectId);
var relation = user.relation('friendRelation');
relation.add(request.user);
user.save().then(function(user) {
    response.success("Successfully added friend Request");
}, function(error) {
    response.error("An error has occurred")
});
});

对此处发生的事情以及您的代码无效的原因进行了一些澄清。

  1. 首先,将Parse.Cloud.useMasterKey();置于函数的开头是一个好习惯。
  2. 我看到你在开头就有了userId,你想根据它的objectId使用用户。我要这样做,你应该使用Parse.User.createWithoutData('yourObjectIdHere')方法。您实际执行此步骤的目的是创建新用户,而不是为数据库中已有的用户创建引用。
  3. 如果要获取特定对象(在您的情况下是用户对象)的关系,请使用Parse.Object.relation('putRelationKeyHere')。您实际上是在创建新关系而不是访问现有关系。
  4. 我建议您阅读Parse Javascript Guide以了解推荐的技巧。