微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ParseSwift ParseObject 查询约束

如何解决ParseSwift ParseObject 查询约束

我在一个 mongo 数据库中有两个集合。

以下是文档在第一个集合 (MainCollection) 中的外观:

_id
:"mzWqPEDYRU"
TITLE
:"ZAZ: I want."
ownerID
:"lGutCBY52g"
accessKey
:"0kAd4TOmoK0"
_created_at
:2020-03-13T11:42:11.169+00:00
_updated_at
:2020-03-13T17:08:15.090+00:00
downloadCount
:2

这是它在第二个集合 (SecondCollection) 中的外观:

_id
:"07BOGA8bHG"
_p_unit
:"MainCollection$mzWqPEDYRU"
SENTENCE
:"I love nature peace and freedom."
Order
:5
ownerID
:"lGutCBY52g"
AUdio
:"07067b5589d1edd1d907e96c1daf6da1_VOICE.bin"
_created_at
:2020-03-13T11:42:17.483+00:00
_updated_at
:2020-03-13T11:42:19.336+00:00

一个和第二个集合之间存在父子关系。在最后一个文档中,我们可以看到 _p_unit 字段,其中“mzWqPEDYRU”部分指向第一个集合中父项的 id。

我从一开始就有一个问题,代码如下:

func theFunction() {
    do {MainCollection.query().find() {
            result in
            switch result {
            case .success(let items):
                print("items.count = \(items.count)")
                for item in items {
                    /// ....
                }
            case .failure(let error):
                print("Error in \(#function): \(error)")
            }
        }
    }
}

上述代码的编写方式工作正常,我得到了 MainCollection 中的元素数量,正如人们所期望的那样。但是随后出现了一个不太预期的行为,在相同的代码中,如果我将 MainCollection 替换为 SecondCollection,而不是获取 SecondCollection 中的元素数作为我会想。我收到如下错误

ParseError(code: ParseSwift.ParseError.Code.unkNownError,message: "Error decoding parse-server response: 
Optional(<NSHTTPURLResponse: 0x2837211a0> { URL:} 
{ Status Code: 200,Headers {} }) with error: 
The data Couldn’t be read because it isn’t in the correct format.
Format: Optional(\"{\\\"results\\\": .......

谁能指出这是什么原因造成的?

解决方法

就像:

var SecondCollection.query(unit == documentOne).find()
,

.query() 方法在键/值方案中工作,因此它应该将键作为字符串传递,将值作为引用类型传递,因此在双引号之间传递“单位”是正确的:

do {SecondCollection.query("unit" == cell).find() {

你得到的错误是因为 cell 是一个 Parse.Object 并且它期望在那个地方有一个值(在这种情况下是一个属性)。

请尝试以下操作,看看它是否适合您:

do {SecondCollection.query("unit" == cell.id).find() {

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。