我有一个表,其中包含Lobbys基本上只是派对房间,它有一个成员数组和一个消息数组,这是一个例子:
{
"id": "a77be9ff-e10f-41c1-8a4c-66b5a55d823c" ,
"members": [
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt" ,
"Gacnt"
] ,
"messages": [ ]
}
Run Code Online (Sandbox Code Playgroud)
现在,当用户websocket连接到Lobby它时,它会将他们的用户名添加到Members列表中,而我正在尝试将其设置为当用户离开Party时将其从成员列表中删除,我想出了这个:
r.db("gofinder").table("Lobbys").get("a77be9ff-e10f-41c1-8a4c-66b5a55d823c")("members").update({
members: r.db("gofinder").table("Lobbys").get("a77be9ff-e10f-41c1-8a4c-66b5a55d823c")("members").ne("Gacnt")
})
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
e: Could not prove argument deterministic. Maybe you want to use the non_atomic flag? in:
r.db("gofinder").table("Lobbys").get("a77be9ff-e10f-41c1-8a4c-66b5a55d823c")("members").update({"members": r.db("gofinder").table("Lobbys").get("a77be9ff-e10f-41c1-8a4c-66b5a55d823c")("members").ne("Gacnt")})
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
但显然有一个错误,我是Rethink的新手,所以我不确定如何做到这一点,除非我应该选择数组,自己修改它然后把新数组放回去.
现在我正在使用这个解决方案,但我觉得它可能更简单,特别是如果我可以让它ReQL来修改数组而不必手动执行
这是我目前的解决方案,与问题无关
query = gorethink.Table("Lobbys").Get(userinfo.LobbyID).Field("members")
res, err := query.Run(db)
if err != nil {
log.Println(err)
}
defer res.Close()
var members []string
if err = res.All(&members); err != nil {
log.Println(err)
}
for i := 0; i < len(members); i++ {
if members[i] == userinfo.Username {
members = append(members[:i], members[i+1:]...)
i--
}
}
query = gorethink.Table("Lobbys").Get(userinfo.LobbyID).Update(map[string]interface{}{
"members": members,
})
Run Code Online (Sandbox Code Playgroud)
你可能想要这样的东西:
r.db('gofinder').table('Lobbys').get(ID).update(function(row) {
return {members: row('members').setDifference(['Gacnt'])};
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
564 次 |
| 最近记录: |