RealmJS: правильный запрос для извлечения объекта из списка с помощью оператора AND - PullRequest
0 голосов
/ 27 августа 2018

Схема продукта имеет много деталей, таких как: 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 },
    }
};

Эта гибкость приводит к сложности написания фильтра запросов. Мне нужно иметь возможность фильтрации на основе конкретного имени атрибута продукта и значений атрибута продукта.

let query = "productAttributes.attributeName = " + "\"" + "Manufacturer" + "\"" + " AND productAttributes.attributeValue = [c]" + "\"" + "Pepsico" + "\"";        

        var productList = this.realm.objects('ProductModel').filtered(query).snapshot();

Пожалуйста, помогите мне написать запрос для фильтрации ProductModel из БД, совпадающей с ProductDetailsModel attributeName и attributeValue?

Текущий запрос не соответствует одиночной ProductDetailsModel, где attributeName = "Manufacturer" AND attributeValue = "Pepsico"

1 Ответ

0 голосов
/ 12 сентября 2018

Вы ссылаетесь на него локальным атрибутом Objects, а не именем связанного объекта. например

let attributeName = "Manufacturer"
let attributeValue = "Pepsico"
let query = `productAttributes.attributeName  ==[c] '${attributeName}' AND productAttributes.attributeValue ==[c] '${attributeValue}'`
...