写入不属于当前设备的 Parse Installation 类对象 PFInstallation iOS Swift 3 FROM CLIENT APP

Posted

技术标签:

【中文标题】写入不属于当前设备的 Parse Installation 类对象 PFInstallation iOS Swift 3 FROM CLIENT APP【英文标题】:Write to a Parse Installation class object that is not of the current device PFInstallation iOS Swift 3 FROM CLIENT APP 【发布时间】:2017-07-22 15:05:19 【问题描述】:

我想知道用户是否可以在 Parse Installation 类中读/写不属于他们设备的行?

我尝试PFInstallation.query()PFQuery(className: "Installation")查询安装类,然后编辑和保存对象。第一种方法返回以下错误:Clients aren't allowed to perform the find operation on the installation collection。第二个在查询中没有返回任何对象。

除了设备的 PFInstallation.current() 之外,是否无法写入安装类行?或者有人知道如何做到这一点的正确方法吗?

另外,我正在尝试从客户端应用程序执行此操作,而无需主密钥

第一种方法:

let query = PFInstallation.query()
    query?.findObjectsInBackground(block:  (rows, error) -> Void in
        if error == nil 

            print(rows)

         else 

            print("Error: ", error!)

        
    )

第二种方法:

let inst = PFQuery(className: "Installation")
    inst.whereKey("deviceType", equalTo: "ios")
    inst.findObjectsInBackground(block:  (rows, error) -> Void in
        if error == nil 

            for row in rows! 

                print("row: ", row)

            

         else 

            print("ERROR: ", error!)

        
    )

【问题讨论】:

【参考方案1】:

类名是_Installation(所有保留的表/类名以下划线开头_

_Installation (More here) 中允许的操作:

Get -> 忽略 CLP,但不忽略 ACL 查找 -> 仅主密钥 * 创建 -> 忽略 CLP 更新 -> 忽略 CLP,但不忽略 ACL ** 删除 -> 仅主密钥 ** 添加字段 -> 正常行为

* 获取安装请求通常遵循 ACL。除非您提供 installationId 作为约束,否则不允许查找没有主密钥的请求。

** 安装上的更新请求确实遵守安装上定义的 ACL,但删除请求仅是主密钥。有关安装如何工作的更多信息,请查看 REST 指南的安装部分。

额外:

使用类本身提供的类名而不是输入字符串值,既安全又简单。

// Unsafe, can lead to typos, etc.
let query = PFQuery(className: "Installation")
// Better
let query = PFQuery(className: PFInstallation.parseClassName)
// Simpler
let query = PFInstallation.query()

【讨论】:

以上是关于写入不属于当前设备的 Parse Installation 类对象 PFInstallation iOS Swift 3 FROM CLIENT APP的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Parse 中存储喜欢帖子的人?

Parse / Facebook -> 会话与当前存储的会话不匹配

Android Parse 推送通知不起作用 - 过时的设备

用于在网站上发布并将推送发送到移动设备的表单 Parse

whereBetween 不使用 Carbon::parse()->subDay() & 当前日期 laravel

使用 Parse 数组将数据保存到设备