我不是100%肯定这一点,但在我的意见中,当sortBy
使用ComputedProperty
时,NDB查询会出现问题。
在我的示例中,按name
排序的工作没有预期,而numberOfProducts
排序不会返回任何条目。但是,如果按name
排序,则会返回numberOfProducts
的正确值,这意味着模型本身和数据库都可以。
我的模特:
class Brand(ndb.Model):
name = ndb.StringProperty()
products = ndb.ComputedProperty(lambda self: Product.query(Product.brand==self.key).fetch(keys_only=True))
numberOfProducts = ndb.ComputedProperty(lambda self: len(self.products))
我的查询:
sortBy = Brand._properties[args['sortBy']]
query = query.order(-sortBy if args['asc'] == '0' else +sortBy)
entities, cursor, more = query.fetch_page(20, start_cursor=Cursor(urlsafe=args['cursor']))
非常感谢您的任何思考。
答案 0 :(得分:0)
好的,我发现了这个问题,即使我不知道为什么会导致这种意外行为。
基本上我的computedProperty $array[] = $row['model'] . " " . $row['quantity'];
echo json_encode($array);
会导致问题:
products
此查询返回products = ndb.ComputedProperty(lambda self: Product.query(Product.brand==self.key).fetch(keys_only=True))
个键,因此该属性需要设置list
参数。有没有人知道为什么这个错误会导致我的错误?