产品有许多细节,例如:productName,制造日期,制造商名称,产品类型等。但我需要支持没有为产品详细信息定义架构的灵活性。下面是实现这一点的Realm-JS架构。
import Realm from 'realm';
export default class ProductModel extends Realm.Object { }
ProductModel.schema = {
name: 'ProductModel',
properties: {
productAttributes: { type: 'list', objectType: 'ProductDetailsModel' },
ID: { type: 'string', optional: true },
}
};
import Realm from 'realm';
export default class ProductDetailsModel extends Realm.Object { }
ProductDetailsModel.schema = {
name: 'ProductDetailsModel',
properties: {
attributeName: { type: 'string', optional: true },
attributeValue: { type: 'string', optional: true },
}
};
这种灵活性使编写排序查询变得复杂。我需要能够根据产品属性值进行排序。我们说“产品名称”是产品的属性,我需要获取按“A-Z”中的“产品名称”或相反顺序排序的产品。
var productList = realm.objects('ProductModel').sorted(<Some query string>)
请帮我编写查询以根据某些值(productName或制造商名称等)从DB中获取ProductModel。排序顺序?
P.S。我知道的其他选项是使用Array.sort获取领域对象和排序。
更新1: 当我尝试使用以下查询进行排序时:
let item = this.realm.objects('ProductModel').filtered("productAttributes.attributeName = " + "\"" + "serialNo" + "\"")
.sorted('productAttributes.attributeValue', false);
我收到以下错误
无法对关键路径'productAttributes.attributeValue'进行排序:属性'ProductModel.productAttributes'属于不受支持的类型'array'。