我有两个数据存储模型,集团&产品。产品分为两类:安全和非安全。每个产品都属于一个组。
我们有三种类型的用户:管理员、普通用户和组成员(用户可以属于多个组)。
管理员用户可以访问所有组。普通用户(不属于任何组)只能访问非安全产品。小组成员可以访问他所属的组的所有产品和他不属于的组的所有非安全产品。
我们需要查询基于数据存储游标的产品列表,每次获取15条记录,结果应该由last_updated_date排序。
对于管理,查询:PRODUCT.query().fetch_page(25, start_cursor=cursor).order(-PRODUCT.last_updated_date)
对于普通用户,查询:PRODUCT.query(PRODUCT.secure=False).fetch_page(25, start_cursor=cursor).order(-PRODUCT.last_updated_date)
对于组成员的查询,我一点也不困惑,它基本上有'IN‘操作符、非相等运算符和last_updated_date上的排序。如何编写查询以检索属于组的用户的结果: G1、G3、G5?
SQL查询可能如下所示
Select * from Product where Group IN ( Select GroupID from User where email='a@a.com')
UNION
Select * from Product where Secure = No请帮我写一个用last_updated_date排序的NDB数据存储查询。
发布于 2016-10-23 13:45:20
试试这个:
group_ids_of_user = ['G1', 'G3', 'G5']
query = Product.query(ndb.OR(Product.secure == False,
ndb.AND(Product.secure == True, Product.group.IN(group_ids_of_user))))https://stackoverflow.com/questions/40200974
复制相似问题