[英]Fauna delete first item from intersection
我有一個動物區數據庫查詢,由於字段組合是唯一的,它將返回一個匹配項:
await faunaClient.query(
Intersection(
Match(Index('tokens_search_by_blacklisted'), false),
Match(Index('tokens_search_by_token'), refreshToken),
Match(Index('tokens_search_by_type'), tokenTypes.REFRESH)
)
)
我想知道的是如何從這里刪除返回的第一個項目,我知道理論上我可以分頁,lambda delete 但我不想迭代。 我只想刪除返回的第一個值。
我知道如果你使用 Get 它會從集合中獲取第一個項目,但遺憾的是 delete 不會這樣做,我不應該讓對象也執行讀取只是為了選擇 ref 然后刪除。
當您使用Match
時,結果是索引支持的集合的集合引用。 即使索引沒有在values
定義中明確指定ref
字段,此類集合也包括對所涵蓋文檔的引用。
使用Intersection
、 Union
或Difference
后,結果集僅包括索引values
定義中定義的字段:隱式ref
字段丟失。
在 Fauna 中,集合是無界的,因此在通過Paginate
或Get
實現集合之前,沒有任何具體的項目可以操作。 因此,您需要使用其中一個函數來從交叉點檢索元組。
您可以將頁面大小設置為 1,以便Paginate
僅返回一項。 Paginate
的實現在它有一個充滿結果的頁面時立即返回,因此它執行得非常好。
您需要確保Intersection
結果中的元組包含要刪除的文檔引用,否則您將無法刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.