gpt4 book ai didi

javascript - Parse.com 云功能 - 在发送给客户端之前手动修改对象字段

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:56:55 26 4
gpt4 key购买 nike

我试图限制云函数中解析用户对象的某些字段的可见性。我有一个“产品”类,带有一个名为“所有者”的指针,指向上传该项目的“用户”。

我还有一个名为“getProducts”的云函数,我使用 query.include("owner") 同时获取所有者数据。

我想要实现的是,“getProduct”的输出将是产品列表,但“Owner”对象将仅包含某些字段,例如“firstName”或“facebookId”,我不想向客户返回其他敏感数据,即使我没有提供(例如位置、电子邮件、姓氏等)。

经过搜索,我发现了 2 种可能的解决方案。1.) 将 User 类分成 2 个类,其中 1 个是“私有(private)”类,带有 ACL,仅供用户使用。2.) 我更喜欢的第二种方法是编辑云函数中的字段,但我似乎无法更改“产品”对象中的“所有者”对象。我收到错误:“错误:未捕获试图使用指向新的未保存对象的指针来保存对象。(代码:141,版本:1.2.19)”

var output[] = [];
_.each(results, function(result) {
var responseData = {};
var owner = result.get("owner");

//Remove fields from the user object
var itemOwnerId = owner.id;
var itemOwnerFirstName = owner.firstName;
var itemOwnerFacebookID = owner.facebookID;
var itemOwner = new Parse.User();
itemOwner.id = itemOwnerId;
itemOwner.id = itemOwnerId;
itemOwner.firstName = itemOwnerFirstName;
itemOwner.facebookID = itemOwnerFacebookID;
result.set("owner", itemOwner);
responseData.item = result;
output.push(responseData);
});

调用 result.set("owner", itemOwner) 似乎不好,让我执行以下操作:错误:未捕获 试图用指向新的、未保存的对象的指针来保存对象。 (代码:141,版本:1.2.19)

我做错了什么?

最佳答案

SDK 不允许将已更改的对象序列化为响应。

解决这个问题的黑客方法是:

result.dirty = function() { return false; };

这将禁用检查并允许您返回修改后的对象。

如果你想稍后重新启用它,你需要存储 result.dirty 的原始值并稍后重新分配它。

关于javascript - Parse.com 云功能 - 在发送给客户端之前手动修改对象字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24959798/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com