RealmJS:如何编写内部对象为Key-Value的有序获取查询?

时间:2018-06-19 10:45:45

标签: react-native realm

产品有许多细节,例如: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'。

0 个答案:

没有答案