ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-07-14 15:33:56  阅读:97  来源: 互联网

标签:javascript parse-platform


我试图限制云功能中解析用户对象的某些字段的可见性.
我有一个“Product”类,其中一个名为“owner”的指针指向上传项目的“User”.

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

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

搜索后我看到了两种可能的解决方案.
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)并不好,并给我一个exepction:
rror:Uncaught尝试使用指向未保存的新对象的指针保存对象. (代码:141,版本:1.2.19)

我究竟做错了什么?

解决方法:

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

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

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

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

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

标签:javascript,parse-platform
来源: https://codeday.me/bug/20190714/1459483.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有