2016-11-17 36 views
0

我有一个问题,获取具有多个[String:Int]值的列的对象。在我的情况下,我正在存储用户可以喜欢或不喜欢的消息。该消息对象具有列likes,其包含存储userID等值(+ 1/-1)的Dict[String, Int]。 在后端,它看起来像:解析&Swift:具有多个键的列

"likes": { 
    "123": 1, 
    "456": -1, 
    "789": 1 
}, 

我能得到的结果,直到使用一个星期前:

query.whereKey("likes." + userID, equalTo: 1) 

但不幸的是,我发现了错误信息:

[错误]:无效键名:likes.123(代码:105,版本:1.12.0)

即使它在几天前工作。

好的,也许我还不够清楚。我试图获取用户以前喜欢的所有消息。因此,我想选择“likes”列中包含userID的所有消息。

该类被称为“消息”具有属性“喜欢”,该属性再次包含字典[用户ID,值]。完整的查询看起来是这样的:

let query = Message.query()!

query.whereKey("likes." + user, equalTo: 1)

,并在后端的对象看起来是这样的:

{"_id": "123456789", 
"message": "Test", 
"likes": { "123": 1, "456": -1, "789": 1 } 
} 

我希望你能帮助:)

回答

0

你正试图获得likes.的值,但实际上您的密钥是likes,请删除dot从您的代码。

修改后的代码:

query.whereKey("likes", equalTo: 1) 

谢谢:)

+0

感谢您的答复,但如果** **点是删除,然后我仍然得到同样的错误信息:“[错误]:无效的密钥名称:likes123(代码:105,版本:1.12.0)“ – vid

+0

oops查看上面更新的代码。 –

+0

这里'likes'是一个对象,如果您要访问的'123'在喜欢的对象,你需要使用这样的'让值值= likes.123' –