Parse platform “云代码原因”;试图用指向新的未保存对象的指针保存对象“;保存指针时
在我的应用程序中,我有用户和帖子,我试图实例化我的活动类,它有指向用户和帖子对象的指针。这是我的密码:Parse platform “云代码原因”;试图用指向新的未保存对象的指针保存对象“;保存指针时,parse-platform,Parse Platform,在我的应用程序中,我有用户和帖子,我试图实例化我的活动类,它有指向用户和帖子对象的指针。这是我的密码: var Activity = Parse.Object.extend("Activity"); var User = Parse.Object.extend("_User"); var Post = Parse.Object.extend("Posts"); var activityHandler = function(request, response){ //toUser is
var Activity = Parse.Object.extend("Activity");
var User = Parse.Object.extend("_User");
var Post = Parse.Object.extend("Posts");
var activityHandler = function(request, response){
//toUser is the objectId of the User not the object itself.
var toUserId = request.toUser;
var fromUserId = request.fromUser;
var postId = request.post;
var arg = request.argument;
var toUser = new User();
toUser.set("objectId",toUserId);
var fromUser = new User();
fromUser.set("objectId",fromUserId);
var post = new Post();
post.set("objectId",postId);
var activity = new Activity();
activity.set("activityFrom", fromUser);
activity.set("activityTo", toUser);
activity.set("argument", arg);
activity.set("post", post);
activity.save(null, {
useMasterKey: true,
success: function(o){
console.log("activity logged successfully");
response.success();
},
error: function(err){
console.log(err);
},
}
);
};
Parse.Cloud.define("createActivity", activityHandler);
代码是不言自明的,但总而言之,客户端发送适当的用户和帖子ID,云函数应该实例化一个新的活动对象,并带有指向用户和帖子的指针。然而,当我尝试保存时,我得到:
{“code”:141,“error:“Uncaught试图用指向新的未保存对象的指针保存对象。”}
问题是,发送到函数的对象ID是完全有效的,数据库中已经存在对象。ACL也不是问题,因为我使用的是主密钥
我做错了什么?那是我的错
我的代码有多个问题
我使用的是object.set(“objectId”,id)
语法,实际上应该是object.id=id
。我不确定这是否必要,也许没有改变也行,但我到处都读到这是一种不好的做法
我没有正确获取请求参数。我使用的是request.param1
而不是request.params.param1
,参数变量未定义。很长一段时间以来,我没有检查它是否未定义,因为从我当时的角度来看,错误消息对于未定义参数并没有真正的帮助。(现在有意义了,没有ID,它会自动尝试创建一个新对象)
我已经更正了它们,现在它确实正确保存了。当您忘记调用该方法时,也会发生这种情况:
response.success(object);
我在这里也遇到了同样的问题,请给我解释一下object.id=id,这是否意味着我们应该用object.set(“object”,object.id)来代替?谢谢您应该仅对id、createdAt和updatedAt使用.id
。对于所有其他(AFAIK),使用.set('property',val)代码>@libra