为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 RethinkDB 删除数组中的元素

如何使用 RethinkDB 删除数组中的元素

Go
绝地无双 2021-12-06 16:54:59
我有一个表格,其中包含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": [ ]}现在,当用户 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")})但我收到错误: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")})^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^但显然有一个错误,我是 Rethink 的新手,所以我不确定如何做到这一点,除非我应该选择数组,自己修改它,然后将新数组放回去。现在我正在使用这个解决方案,但我觉得它可能更简单,特别是如果我可以让它ReQL修改数组而不是手动完成
查看完整描述

1 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

你可能想要这样的东西:


r.db('gofinder').table('Lobbys').get(ID).update(function(row) {

  return {members: row('members').setDifference(['Gacnt'])};

})


查看完整回答
反对 回复 2021-12-06
  • 1 回答
  • 0 关注
  • 219 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信