错误:TypeError:对象没有方法“设置”

Posted

技术标签:

【中文标题】错误:TypeError:对象没有方法“设置”【英文标题】:Error: TypeError: Object has no method 'set' 【发布时间】:2014-09-10 21:10:19 【问题描述】:

我正在为我的 ios 应用程序使用云代码功能。我正在用这段代码调用云函数...

var moment = require("moment");

Parse.Cloud.define("registerActivity", function(request, response) 
    var user = request.user;
    user.set("lastActive", new Date());
    user.save().then(function (user) 
        response.success();
    , function (error) 
        console.log(error);
        response.error(error);
   );
);

从 iOS 我这样称呼它......

[PFCloud callFunction:@"registerActivity" withParameters:@];

为什么会出现这个错误?

Error: TypeError: Object  has no method 'set'

【问题讨论】:

你的request.user 对象有set 方法吗?还是您只是想这样做user.lastActive = new Date() 我不知道。如果我不必将它用于云代码,我根本不会使用它。我对我用 JS 所做的一切只有一半的把握。那么它有一个设置方法吗?它应该。在 iOS 中,您只需执行 [[PFUser currentUser]setObject:[NSDate date] forKey:@"lastActive"];。我如何用 JS 做同样的事情并且没有错误? 【参考方案1】:

您不一定通过云函数传递解析对象并期望它们保持解析对象。更好的解决方案是传递对象 id,然后创建指向用户对象的指针,并将该 id 设置为它。然后更新保存:

var moment = require("moment");

Parse.Cloud.define("registerActivity", function(request, response) 
    var user = new Parse.User()
    user.id = request.userId;
    user.set("lastActive", new Date());
    user.save().then(function (user) 
        response.success();
    , function (error) 
        console.log(error);
        response.error(error);
   );
);

【讨论】:

哈哈你是对的。这就是我一周前使用的方法,它就像一种魅力。所以你是对的,只是有点晚了哈哈。但是你会因为尝试而得到一张笑脸! 谢谢!毕竟在这里最好有答案,它可以帮助其他有同样问题的人。 您能否详细说明为什么我们不能“期望它们保持解析对象”?我现在已经遇到过几次这个问题,但我找不到任何原因,所以我不确定我需要注意什么。 @gyratorycircus:有几个原因。一是在 iOS 端你有一个 Objective-C 类型的 PFObject。如果您只是将该对象作为参数传递,您将不得不依赖某种序列化到 JSON 中。现在可能一切都很好,但是在接收端,JSON 必须反序列化为 Parse 对象。这也可能没问题,但默认情况下不会发生这样的序列化/反序列化。请注意,解析对象不仅仅是您在数据浏览器中看到的属性,它还具有原型方法等,因此包含函数指针。

以上是关于错误:TypeError:对象没有方法“设置”的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:错误 #1009:无法访问空对象的属性或方法

Uncaught TypeError: Illegal invocation问题解决方法

如何修复 React 中的“TypeError:categories.map 不是函数”错误

TypeError:错误 #1009:无法访问空对象引用的属性或方法。尝试创建按钮时。

AS3:TypeError:错误 #1009:无法访问空对象引用的属性或方法。需要帮助

我有错误“TypeError:'type'对象不可下标”